atomic:只能單線程進(jìn)行訪問和修改屬性,性能低(默認(rèn))
nonatomic: 多線程進(jìn)行訪問和修改屬性,性能高
copy:主要用在NSString類型,表示復(fù)制內(nèi)容。一般用于NSString/block
setter:相關(guān)修飾符:assign | retain | copy? 系統(tǒng)默認(rèn)屬性是assign。retain是指針的復(fù)制,copy是內(nèi)容的復(fù)制
assign:用于非指針變量。用于基礎(chǔ)數(shù)據(jù)類型(如NSInteger, CGFloat)和C數(shù)據(jù)類型(int, float, double, char等), 另外還有id類型,基本數(shù)據(jù)類型,結(jié)構(gòu)體、枚舉、(非oc對(duì)象);記?。呵懊娌恍枰樱木陀胊ssign
strong: 這個(gè)屬性特質(zhì)表示一種擁有的關(guān)系,一般用于除了NSString/block之外的oc對(duì)象
weak: 一般用于代理/UI控件,當(dāng)兩個(gè)對(duì)象相互引用(例如控件和控件的代理),一個(gè)用strong, 一個(gè)用weak,避免循環(huán)引用。
聲明block對(duì)象時(shí)首先需要用copy修飾符,另一個(gè)需要注意的問題是關(guān)于線程安全,調(diào)用block時(shí)另一個(gè)線程有可能去修改block時(shí)需要使用atomic,如果確定不會(huì)發(fā)生則使用nonatomic