@property参数的总结
1. 开发程序分为 ARC 和 MRC:
2. 与多线程相关的2个参数:
atomic:默认的。安全,但效率低下。
nonatomic:不安全,效率高。
无论在ARC还是在MRC都可以使用!
使用建议:无论是ARC还是MRC,都使用nonatomic!
3. retain:
只能用在MRC的模式下,代表生成的setter方法是标准的MRC内存管理代码。
当属性的类型是OC对象的时候,绝大多数情况下使用retain,只有在出现了循环引用的时候,1边使用retain,1边使用assign。
4. assign(默认的):
在ARC和MRC下都能使用assign!当属性的类型是非OC对象的时候,就使用assign!
5. strong(默认的):
只能使用在ARC机制下,当属性的类型是OC对象类型的时候,绝大多数情况下都是用strong!只有出现了循环引用的时候,1端strong,1端weak!
6. weak:
只能使用在ARC机制下,当属性的类型是OC对象类型的时候,只有出现了循环引用的时候,1端strong,1端weak!
7. readwrite(默认的) readonly:
无论是ARC,还是MRC下,都可以使用!如果希望指针是只读的,那就用readonly。否则,就用readwrite!
8. setter getter:
无论是ARC,还是MRC下,都可以使用!无论什么情况都不要改setter方法的名字,因为默认情况下生成的名字就已经是最标准的了!而getter方法的名字可以在属性的类型是BOOL类型的时候,修改为以is开头的名字,可以提高代码的阅读性
重中之重:
在ARC机制下,原来使用retain的地方用strong。
出现循环引用的时候:
1)MRC:1边retain,1边assign
2)ARC:1边strong,1边weak
|
|