正文:
1. readonly / readwrite
readonly和readwrite的区别就在于是否可写,如果用代码实现,也就是readonly不会生成setter,而readwrite会生成。如果定义的属性需要外部不可写,则使用readonly。(注意:readonly仅限于外部不可写,内部可通过_var的方式来访问)
2. retain / assign / copy
在非ARC的模式下,属性的内存需要自行管理,也就是需要自己retain/release。
retain:编译器会自行生成setter中管理内存的代码。 assign:直接赋值,不需要内存管理操作
简单/复杂数据类型(int、float、double、NSInteger、struct)
delegate指针(避免重复引用)
SEL(@selector)
3. strong / weak
在ARC模式下,“替代“retain / assign的就是strong / weak
(强引用/弱引用)。
4. atomic / nonatomic
atomic / nonatomic表示是否是线程安全(是否需要加锁)。如果是atomic,那么就是线程安全的情况,因为访问资源时,都会加锁,所以会降低多线程访问效率。