1、weak
- OC對象
2、assign
- 基本數(shù)據(jù)對象
- OC對象
3端幼、strong
- OC對象
4、copy
- NSString
- block
區(qū)別
(1).weak弧满,表明該屬性定義了一種“非擁有關(guān)系” (nonowning relationship)婆跑。為這種屬性設(shè)置新值時(shí),設(shè)置方法既不保留新值谱秽,也不釋放舊值洽蛀。
(2).assign也可以修飾對象摹迷,但是用assign修飾的對象在釋放后疟赊,指針的地址還是存在的,也就是說指針并沒有被置為nil峡碉,會(huì)造成眾所周知的野指針異常近哟。然而,assign修飾的基礎(chǔ)數(shù)據(jù)類型(例如NSInteger等)和C數(shù)據(jù)類型(int, float, double, char)等一般分配在楒昙模空間上吉执,棧空間的內(nèi)存會(huì)由系統(tǒng)自動(dòng)處理地来,當(dāng)分配的棿撩担空間的內(nèi)存沒有被指針指向時(shí)就會(huì)被銷毀,所以不會(huì)造成野指針異常未斑。
(3).weak比 assign多了一個(gè)功能就是當(dāng)屬性所指向的對象消失的時(shí)候(也就是內(nèi)存引用計(jì)數(shù)為0)會(huì)自動(dòng)賦值為 nil咕宿,這樣再向 weak修飾的屬性發(fā)送消息就不會(huì)導(dǎo)致野指針操作crash。