10.說一下對(duì) retain,copy,assign,weak,_Unsafe_Unretain 關(guān)鍵字的理解。

Strong

Strong 修飾符表示指向并持有該對(duì)象,其修飾對(duì)象的引用計(jì)數(shù)會(huì)加1。該對(duì)象只要引用計(jì)數(shù)不為0就不會(huì)被銷毀。當(dāng)然可以通過將變量強(qiáng)制賦值 nil 來進(jìn)行銷毀。

Weak

weak 修飾符指向但是并不持有該對(duì)象,引用計(jì)數(shù)也不會(huì)加1。在 Runtime 中對(duì)該屬性進(jìn)行了相關(guān)操作,無需處理,可以自動(dòng)銷毀。weak用來修飾對(duì)象,多用于避免循環(huán)引用的地方。weak 不可以修飾基本數(shù)據(jù)類型。

assign

assign主要用于修飾基本數(shù)據(jù)類型, 例如NSInteger,CGFloat,存儲(chǔ)在棧中,內(nèi)存不用程序員管理。assign是可以修飾對(duì)象的,但是會(huì)出現(xiàn)問題。

copy

copy關(guān)鍵字和 strong類似,copy 多用于修飾有可變類型的不可變對(duì)象上 NSString,NSArray,NSDictionary上。

__unsafe_unretain

__unsafe_unretain 類似于 weak ,但是當(dāng)對(duì)象被釋放后,指針已然保存著之前的地址,被釋放后的地址變?yōu)?僵尸對(duì)象,訪問被釋放的地址就會(huì)出問題,所以說他是不安全的。

__autoreleasing

將對(duì)象賦值給附有 __autoreleasing修飾的變量等同于 ARC 無效時(shí)調(diào)用對(duì)象的 autorelease 方法,實(shí)質(zhì)就是扔進(jìn)了自動(dòng)釋放池。

轉(zhuǎn)自:https://github.com/liberalisman/iOS-InterviewQuestion-collection/blob/master/%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/10.%E7%AC%AC%E5%8D%81%E9%A2%98.md

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

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