strong 表示指向并擁有該對(duì)象。其修飾的對(duì)象引用計(jì)數(shù)會(huì)增加1互站。該對(duì)象只要引用計(jì)數(shù)不為 0 則不會(huì)被銷毀私蕾。當(dāng)然強(qiáng)行將其設(shè)為 nil 可以銷毀它。
weak 表示指向但不擁有該對(duì)象胡桃。其修飾的對(duì)象引用計(jì)數(shù)不會(huì)增加踩叭。無(wú)需手動(dòng)設(shè)置,該對(duì)象會(huì)自行在內(nèi)存中銷毀标捺。
assign 主要用于修飾基本數(shù)據(jù)類型懊纳,如 NSInteger 和 CGFloat,這些數(shù)值主要存在于棧上亡容。
weak 一般用來修飾對(duì)象嗤疯,assign 一般用來修飾基本數(shù)據(jù)類型。原因是assign 修飾的對(duì)象被釋放后闺兢,指針的地址依然存在茂缚,造成野指針,在堆上容易造成崩潰屋谭。而棧上的內(nèi)存系統(tǒng)會(huì)自動(dòng)處理脚囊,不會(huì)造成野指針。
copy 與 strong 類似桐磁。不同之處是 strong 的復(fù)制是多個(gè)指針指向同一個(gè)地址悔耘,而 copy 的復(fù)制每次會(huì)在內(nèi)存中拷貝一份對(duì)象,指針指向不同地址我擂。copy 一般用在修飾有可變對(duì)應(yīng)類型的不可變對(duì)象上衬以,如 NSString , NSArray , NSDictionary 。
Objective-C 中校摩,基本數(shù)據(jù)類型的默認(rèn)關(guān)鍵字是 atomic , readwrite , assign 看峻;普通屬性的默認(rèn)關(guān)鍵字是 atomic , readwrite , strong 。
更多:iOS面試題合集