Каковы атрибуты по умолчанию для свойств Objective C? - PullRequest
41 голосов
/ 19 октября 2011

Каковы атрибуты по умолчанию для свойства, если вы не перечислили какие-либо в цели C?

Например, если я написал это:

@property float value;

Какими будут значения по умолчанию, например, только для чтения, для сохранения ... и т. Д.? 1006

Ответы [ 2 ]

65 голосов
/ 19 октября 2011

Значения по умолчанию / неявные значения atomic, readwrite и assign.

атомное

Это означает, что значение читается / записывается атомарно. Вопреки довольно распространенному заблуждению атомарность не означает безопасность потока. Проще говоря, это гарантирует, что прочитанное или записанное вами значение будет прочитано или записано целиком (при использовании методов доступа). Даже если вы используете аксессоры постоянно, это не совсем потокобезопасно.

* чтение и запись 1015 *

Свойство предоставляется сеттеру и геттеру.

присвоить

Это значение по умолчанию обычно используется для POD (Plain-Old-Data) и встроенных типов (например, int).

Для NSObject типов вы предпочитаете иметь сильную ссылку. В большинстве случаев вы объявляете свойство copy, strong или retain. assign не выполняет операций подсчета ссылок. Смотрите также: http://clang.llvm.org/docs/AutomaticReferenceCounting.html#property-declarations

сильный

Свойство может быть неявно strong под ARC, в некоторых случаях:

Свойство типа указателя сохраняемого объекта, которое синтезируется без источника владения, имеет право собственности на связанную с ним переменную экземпляра, если она уже существует; в противном случае [начиная с Apple 3.1, LLVM 3.1] его право собственности неявно сильно. До этого пересмотра было плохо сформировано, чтобы синтезировать такое свойство.

7 голосов
/ 19 октября 2011

равно

@property (atomic, readwrite, assign) float value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...