1.讀寫設(shè)置
2.retain
自動在set 方法中添加堆引用對象內(nèi)存管理的方法 并release舊值 retain新值
retain 修飾需要計(jì)數(shù)的屬性
3.assign
--1.不會生成set方法內(nèi)的內(nèi)存管理的代碼酿联,僅僅只會生成普通的set方法豆挽,系統(tǒng)默認(rèn)修飾符號為assign?
--2.assign適用于基本數(shù)據(jù)類型如int,float,struct等值類型晴楔,不適用于引用類型逝慧。因?yàn)橹殿愋蜁环湃霔V杏鹄裱冗M(jìn)后出原則缎浇,由系統(tǒng)負(fù)責(zé)管理?xiàng)?nèi)存措左。而引用類型會被放入堆中腌歉,需要我們自己手動管理內(nèi)存或通過ARC管理蛙酪。
--3.assign如果修飾對象,會產(chǎn)生野指針問題究履;如果修飾基本數(shù)據(jù)類型則是安全的滤否。修飾的對象釋放后,指針不會自動被置空(nil)最仑,此時向?qū)ο蟀l(fā)消息會崩潰藐俺。
4.atomic & nonatomic
atomic 原子性 單線程 性能低 (默認(rèn)屬性)
nonatomic 非原子性 多線程 性能高
5.strong
在ARC 下 保存一個對象用strong 相當(dāng)于MRC下的retain
6.copy
--1.NSString 和其子類需要用Copy修飾 (防止外部修改屬性)
若不使用copy 而使用其他別的屬性,會造成對象屬性指向泥彤,str修改欲芹,對象屬性也隨之改變
--2.Block?
Block也需要使用copy關(guān)鍵字將默認(rèn)產(chǎn)生于棧的Block 轉(zhuǎn)移致 堆中
這樣在Blcok中引用外界參數(shù)時菱父,Block會對該參數(shù)retain,保住外界對象不會被提早釋放
防止在Block調(diào)用時 外界參數(shù)已經(jīng)被釋放調(diào)用野指針