atomic | Implicit. Enables synchronization in synthesized accessor methods. |
nonatomic | Disables synchronization in the synthesized accessor methods. |
readwrite | Implicit. Synthesizes getter, setter and backing ivar. |
readonly | Synthesizes only the getter method and backing ivar, which can be assigned directly. |
getter= name | Specifies the name of getter method, implicit is propertyName . |
setter= name | Specifies the name of setter method, implicity is setPropertyName: . Colon : must be a part of the name. |
strong | Implicit for objects under ARC. The backing ivar is synthesized using __strong , which prevents deallocation of referenced object. |
retain | Synonym for strong . |
copy | Same as strong , but the synthesized setter also calls -copy on the new value. |
unsafe_unretained | Implicit, except for objects under ARC. The backing ivar is synthesized using __unsafe_unretained , which (for obejcts) results in dangling pointer once the referenced object deallocates. |
assign | Synonym for unsafe_unretained . Suitable for non-object types. |
weak | Backing ivar is synthesized using __weak , so the value will be nullified once the referenced object is deallocated. |
class | Property accessors are synthesized as class methods, instead of instance methods. No backing storage is synthesized. |
nullable | The property accepts nil values. Mainly used for Swift bridging. |
nonnull | The property doesn’t accept nil values. Mainly used for Swift bridging. |
null_resettable | The property accepts nil values in setter, but never returns nil values from getter. Your custom implementation of getter or setter must ensure this behavior. Mainly used for Swift bridging. |
null_unspecified | Implicit. The property doesn’t specify handling of nil values. Mainly used for Swift bridging. |