iOS面試題:請說明并比較以下關(guān)鍵詞:strong, weak, assign, copy

  • strong 表示指向并擁有該對象。其修飾的對象引用計(jì)數(shù)會增加1。該對象只要引用計(jì)數(shù)不為 0 則不會被銷毀。當(dāng)然強(qiáng)行將其設(shè)為 nil 可以銷毀它。

  • weak 表示指向但不擁有該對象。其修飾的對象引用計(jì)數(shù)不會增加。無需手動設(shè)置,該對象會自行在內(nèi)存中銷毀。

  • assign 主要用于修飾基本數(shù)據(jù)類型,如 NSInteger 和 CGFloat,這些數(shù)值主要存在于棧上。

  • weak 一般用來修飾對象,assign 一般用來修飾基本數(shù)據(jù)類型。原因是assign 修飾的對象被釋放后,指針的地址依然存在,造成野指針,在堆上容易造成崩潰。而棧上的內(nèi)存系統(tǒng)會自動處理,不會造成野指針。

  • copy 與 strong 類似。不同之處是 strong 的復(fù)制是多個(gè)指針指向同一個(gè)地址,而 copy 的復(fù)制每次會在內(nèi)存中拷貝一份對象,指針指向不同地址。copy 一般用在修飾有可變對應(yīng)類型的不可變對象上,如 NSString , NSArray , NSDictionary 。

  • Objective-C 中,基本數(shù)據(jù)類型的默認(rèn)關(guān)鍵字是 atomic , readwrite , assign ;普通屬性的默認(rèn)關(guān)鍵字是 atomic , readwrite , strong 。


更多:iOS面試題合集

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容