1.atomic 和 nonatomic 关系
atomic: 是原子操作,表示不能再继续分,用于多线程操作,因为是原子操作,涉及比较多的上锁,解锁,所以性能比较差。
nonatomic: 非原子操作,系统默认就是这个属性。
2.readwrite 和readonly
readwrite: 是默认的属性,表示可以对对象进行读和写,会生成对象相应的setter和getter方法。
readonly: 表示只允许读取对象的值,只会生成对象的getter方法。
3.assign 是默认属性,只可以对基本数据类型(如CGFloat,NSInteger,Bool,int,代理对象)等使用。该方式会对对象直接赋值而不会进行retain操作
4.strong 和 weak
strong: 强引用,默认属性,例如一个Label属性,在一个UIView里面,就是强引用.
weak: 弱引用,指针主要用于“父-子”关系,父亲拥有一个儿子的strong指针,因此父亲是儿子的所有者;但为了阻止所有权循环(循环引用),儿子需要使用weak指针指向父亲。
典型例子是delegate模式,你的ViewController通过strong指针(self.view)拥有一个UITableView, UITableView的dataSource和delegate都是weak指针,指向你的ViewController
5.copy
一般NSMutableString 那种可变的都用copy,因为copy会深拷贝,如果原来的值变了的话,copy属性不会收到影响。这就是用copy的场景,马德终于搞清楚了。下面总结比较全面。
http://blog.csdn.net/runintolove/article/details/50767523
网友评论