@property
указывает, что вы определяете свойство, которое на базовом уровне просто синтаксический сахар , что позволяет вам делать variable = object.property
и object.property = value
вместо variable = [object property]
и [object setProperty:value]
,Если вы действительно хотите, вы можете пропустить объявление любых свойств и просто объявить методы getter и setter напрямую, и среда выполнения вряд ли заметит разницу.
Вещи в скобках изменяют свойство.Многие из них полезны только для свойств, чьи реализации геттеров и / или сеттеров созданы для вас, используя @synthesize
в блоке @implementation.Например, assign
(по умолчанию) говорит, что набор значений только что установлен;retain
говорит, что для набора объектов будет автоматически вызываться метод retain
(и предыдущий объект, если таковой имеется, будет вызывать release
);и copy
говорит, что объект будет называться copy
.
Список возможных атрибутов находится в документации .