Что именно делает @synthesize?

JQuery не может добавлять элементы к (кажется, они добавляют их в DOM-проводник, но не на экран).

Обходным путем является добавление со всеми элементами, которые вам нужны для этой страницы, а затем изменение атрибутов элементов с помощью .attr().

$('body')
  .append($(''))
  .mousemove( function (e) {
      $("#c").attr({
          cx: e.pageX,
          cy: e.pageY
      });
  });

http://jsfiddle.net/8FBjb/1/

146
задан Seanny123 12 March 2019 в 21:12
поделиться

5 ответов

@synthesize создает getter и setter для переменной.

Это позволяет задать некоторые атрибуты для ваших переменных, и когда вы @synthesize это свойство для переменной, вы создаете getter и setter для переменной.

Имя свойства может быть таким же, как имя переменной. Иногда люди хотят, чтобы оно было другим, чтобы использовать его в init или dealloc или когда параметр передается с тем же именем переменной.

31
ответ дан 23 November 2019 в 22:35
поделиться

Из документации :

Вы используете ключевое слово @synthesize, чтобы сообщить компилятору, что он должен синтезировать методы установки и / или получения для свойства, если вы не предоставляете их в @implementation блокировать.

16
ответ дан 23 November 2019 в 22:35
поделиться

См. документацию по яблоку

В основном синтезатор создает методы setMapView и mapView, которые устанавливают и получают mapView1

2
ответ дан 23 November 2019 в 22:35
поделиться

В вашем примере mapView1 - это переменная экземпляра (ivar), часть хранилища памяти, принадлежащая экземпляру класса, определенного в example.h и example.m . mapView - это имя свойства . Свойства - это атрибуты объекта, которые могут быть прочитаны или установлены с использованием точечной записи: myObject.mapView . Свойство не имеет , чтобы быть основанным на ivar, но большинство свойств основаны на нем. Объявление @property просто сообщает миру, что существует свойство с именем mapView .

@synthesize mapView = mapView1;

Эта строка сообщает компилятору создать установщик и получатель для mapView , и что они должны использовать ivar с именем mapView1 . Без части = mapView1 компилятор предположил бы, что свойство и ivar имеют одинаковое имя. (В этом случае это приведет к ошибке компилятора, поскольку отсутствует ivar с именем mapView .)

Результат этого оператора @synthesize аналогичен результату, если бы вы добавили этот код самостоятельно:

-(MKMapView *)mapView
{
   return mapView1;
}

-(void)setMapView:(MKMapView *)newMapView
{
  if (newMapView != mapView1)
  {
    [mapView1 release];
    mapView1 = [newMapView retain];
  }
}

Если вы действительно добавите этот код в класс, вы можете заменить оператор @synthesize на

@dynamic mapView;

Главное, чтобы четкое концептуальное различие между ivars и недвижимостью. На самом деле это две очень разные концепции.

227
ответ дан 23 November 2019 в 22:35
поделиться

Создает геттер и сеттер для вашего объекта. Вы можете получить доступ примерно так:

MKMapView* m = object.mapView;

или

object.mapView = someMapViewObject

mapView1 - это имя ivar в классе, mapView - это имя для метода (ов) получения / установки.

2
ответ дан 23 November 2019 в 22:35
поделиться