Ответ 1
По умолчанию/неявные значения: atomic
, readwrite
и assign
.
атомный
Это означает, что значение считывается/записывается атомарно. Вопреки несколько популярному заблуждению, атомичность не соответствует безопасности потоков. Проще говоря, он гарантирует, что прочитанное или написанное вами значение будет прочитано или записано целиком (при использовании аксессуаров). Даже когда вы все время пользуетесь аксессуарами, это не строго безопасно.
чтение и запись
Свойству присваивается сеттер и получатель.
правопреемником
Это значение обычно используется для 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] его владение неявно сильная. До этого пересмотра было плохо сформировано синтезировать такое свойство.