Значения по умолчанию / неявные значения 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] его право собственности неявно сильно. До этого пересмотра было плохо сформировано, чтобы синтезировать такое свойство.