1.atomic 和 nonatomic 關(guān)系
atomic: 是原子操作,表示不能再繼續(xù)分,用于多線程操作,因?yàn)槭窃硬僮鳎婕氨容^多的上鎖,解鎖,所以性能比較差。
nonatomic: 非原子操作,系統(tǒng)默認(rèn)就是這個(gè)屬性。
2.readwrite 和readonly
readwrite: 是默認(rèn)的屬性,表示可以對(duì)對(duì)象進(jìn)行讀和寫(xiě),會(huì)生成對(duì)象相應(yīng)的setter和getter方法。
readonly: 表示只允許讀取對(duì)象的值,只會(huì)生成對(duì)象的getter方法。
3.assign 是默認(rèn)屬性,只可以對(duì)基本數(shù)據(jù)類(lèi)型(如CGFloat,NSInteger,Bool,int,代理對(duì)象)等使用。該方式會(huì)對(duì)對(duì)象直接賦值而不會(huì)進(jìn)行retain操作
4.strong 和 weak
strong: 強(qiáng)引用,默認(rèn)屬性,例如一個(gè)Label屬性,在一個(gè)UIView里面,就是強(qiáng)引用.
weak: 弱引用,指針主要用于“父-子”關(guān)系,父親擁有一個(gè)兒子的strong指針,因此父親是兒子的所有者;但為了阻止所有權(quán)循環(huán)(循環(huán)引用),兒子需要使用weak指針指向父親。
典型例子是delegate模式,你的ViewController通過(guò)strong指針(self.view)擁有一個(gè)UITableView, UITableView的dataSource和delegate都是weak指針,指向你的ViewController
5.copy
一般NSMutableString 那種可變的都用copy,因?yàn)閏opy會(huì)深拷貝,如果原來(lái)的值變了的話,copy屬性不會(huì)收到影響。這就是用copy的場(chǎng)景,馬德終于搞清楚了。下面總結(jié)比較全面。
http://blog.csdn.net/runintolove/article/details/50767523