1、作用:
@property int age;
1) 生成_age
2) 生成_age的get和set方法的聲明
3) 實(shí)現(xiàn)_age的get和set方法
2低矮、分類:
1)、 MRC:assign/ retain/ copy/ readwrite军掂、readonly/ nonatomic昨悼、atomic 等。
2)终议、 ARC:assign/ strong/ weak/ copy/ readwrite、readonly/ nonatomic穴张、atomic 等两曼。
3)、原子性:
automic:對(duì)原子屬性加鎖偿枕,多線程下安全,默認(rèn)值,低性能渐夸,是防止在寫未完成的時(shí)候 被另外一個(gè)線程讀取,造成數(shù)據(jù)錯(cuò)誤渔欢。
nonautomic:對(duì)原子屬性不加鎖,多線程下不安全膘茎,速度快披坏,高性能
4)盐数、讀寫屬性:(是否要生成setter方法)
readWrite:讀寫屬性,生成getter、setter方法谜诫,默認(rèn)值
readOnly:只讀屬性攻旦,只生成getter方法
5)、
weak 表示對(duì)對(duì)象的弱引用牢屋,被weak修飾的對(duì)象隨時(shí)可被系統(tǒng)銷毀和回收。
weak比較常用的地方就是delegate屬性的設(shè)置锋谐。
用weak修飾弱引用截酷,不會(huì)使傳入對(duì)象的引用計(jì)數(shù)加1。
Set方法處理:
assign:直接賦值迂苛,默認(rèn)
注意:
MRC 和 ARC 都可以用assign。
assign下的setter方法:
-(void)setName :(id)str{
name = str;
}
retain:對(duì)對(duì)象release舊值,retain新值
copy:release舊值,copy新值
3康铭、注意
1)赌髓、set和get方法的名稱
修改set和get方法的名稱,主要用于布爾類型。因?yàn)榉祷夭紶栴愋偷姆椒话阋詉s開頭,修改 名稱 一般用在布爾類型中的getter锁蠕。
@property(nonatomic,assign, setter=abc:,getter=haha)int age
可以理解為把[p setAge: ]------> [p abc:], [p age] ---------> [p haha];
2)、assign和weak的區(qū)別:
當(dāng)它們指向的對(duì)象釋放以后悯搔,weak會(huì)被自動(dòng)設(shè)置為nil舌仍,而assign不會(huì),所以會(huì)導(dǎo)致野指針的出現(xiàn)铸豁,可能會(huì)導(dǎo)致crash。
3)在刺、strong和weak的區(qū)別:
strong :表明是一個(gè)強(qiáng)引用,相當(dāng)于MRC下的retain蚣驼,只要被strong引用的對(duì)象就不會(huì)被銷毀,當(dāng)所有的強(qiáng)引用消除時(shí)颖杏,對(duì)象的引用計(jì)數(shù)為0時(shí),對(duì)象才會(huì)被銷毀队丝。
weak : 表明是一個(gè)弱引用欲鹏,相當(dāng)于MRC下的assign,不會(huì)使對(duì)象的引用計(jì)數(shù)+1赔嚎。
4)、兩個(gè)不同對(duì)象相互strong引用對(duì)象侠畔,會(huì)導(dǎo)致循環(huán)引用造成對(duì)象不能釋放损晤,造成內(nèi)存泄漏。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者