Вопрос относительно @property - PullRequest
0 голосов
/ 22 июля 2011

Я новичок в Obj-C, и я хотел бы спросить, почему все должны писать что-то вроде этого?

@property (_something, _something) NSString* name;

Для чего указывает @property?Почему мы должны положить что-то в скобки?

PS: Я знаю, что нет ничего, оно должно быть неатомным, сохранять, копировать и так далее.Поскольку у него так много опций, поэтому я просто вставляю слово для обозначения содержимого в скобках.(Где можно взять весь список доступных опций?)

Спасибо: D

Ответы [ 2 ]

2 голосов
/ 22 июля 2011

@property указывает, что вы определяете свойство, которое на базовом уровне просто синтаксический сахар , что позволяет вам делать variable = object.property и object.property = value вместо variable = [object property] и [object setProperty:value],Если вы действительно хотите, вы можете пропустить объявление любых свойств и просто объявить методы getter и setter напрямую, и среда выполнения вряд ли заметит разницу.

Вещи в скобках изменяют свойство.Многие из них полезны только для свойств, чьи реализации геттеров и / или сеттеров созданы для вас, используя @synthesize в блоке @implementation.Например, assign (по умолчанию) говорит, что набор значений только что установлен;retain говорит, что для набора объектов будет автоматически вызываться метод retain (и предыдущий объект, если таковой имеется, будет вызывать release);и copy говорит, что объект будет называться copy.

Список возможных атрибутов находится в документации .

1 голос
/ 22 июля 2011

Директива @property - это просто обещание, что класс предоставляет средства доступа для данного идентификатора.Параметры, заданные после директивы (copy, nonatomic и т. Д.), Определяют поведение аксессоров.Это действительно все, что нужно.

Связанный синтаксис включает директивы @dynamic и @synthesize и точечную запись.Две директивы являются взаимоисключающими и сообщают компилятору, что вы предоставите средства доступа или что компилятор должен предоставлять средства доступа соответственно.Точечная нотация - это синтаксический сахар, о котором упоминала Аноми, - он предназначен для доступа к свойствам, но вы не обязаны формально объявлять свойство для его использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...