atomic, nonatomic
- atomic
- 複数スレッドから同時に書き込みがあった場合でも、値が壊れないことが保証されている。
- nonatomic
- 複数スレッドから同時に書き込みがあった場合、値は保証されない。一方でパフォーマンスが良い。
weak, strong, assign
- weak
- propertyの参照元が所有宣言をせず、retainカウントが加算されない。
- IBOutletなどで宣言するパーツ等は、基本的に親のViewが存在するためweakを指定します。
- strong
- propertyの参照元が所有宣言をし、propertyのretainカウントがプラスされる。
- assign
- プリミティブ(BOOLやintなど)な値の場合に指定する。この場合propertyには値の単純代入になるため、参照の強さを考慮する必要がない。
readonly, readwrite
- readonly
- propertyが宣言されたClass以外からの値の書き換えができない。getterのみ生成される。
- readwrite
- 値の書き換えがどこでもできる。getter, setterがともに生成される。