http://mp.weixin.qq.com/s?__biz=MzIzMzA4NjA5Mw==&mid=400185908&idx=1&sn=d54dd1245facff494990a05a8d98532e#rd
关于属性的这些选项的学习,做一下总结:
所有的属性,都尽可能使用nonatomic,以提高效率,除非真的有必要考虑线程安全。
NSString:通常都使用copy,以得到新的内存分配,而不只是原来的引用。
strong:对于继承于NSObject类型的对象,若要声明为强使用,使用strong,若要使用弱引用,使用__weak来引用,用于解决循环强引用的问题。
weak:对于xib上的控件引用,可以使用weak,也可以使用strong。
__weak:对于变量的声明,如果要使用弱引用,可以使用weak,如:weak typeof(Model) weakModel = model;就可以直接使用weakModel了。
__strong:对于变量的声明,如果要使用强引用,可以使用strong,默认就是strong,因此不写与写__strong声明都是一样的。
unsafe_unretained:这个是比较少用的,几乎没有使用到。在所引用的对象被释放后,该指针就成了野指针,不好控制。
__unsafe_unretained:也是很少使用。同上。
__autoreleasing:如果要在循环过程中就释放,可以手动使用__autoreleasing来声明将之放到自动释放池。