Objective - C dealloc方法注意事項

當對象引用降為0(此時retainCount不一定為零,由于優(yōu)化retainCount沒有執(zhí)行-1,對象直接釋放)的時候,對象會被釋放。但是具體何時釋放,無法保證

dealloc 應(yīng)該執(zhí)行那些操作

1.清理觀測行為(移除通知,鍵值觀測)

2.釋放對象擁有的引用,比如釋放一些非Objective-C對象

dealloc 不應(yīng)該執(zhí)行那些操作

1.開銷過大或系統(tǒng)稀缺的資源,例如文件描述符、套接字、大塊內(nèi)存等。這些資源不應(yīng)該保留過長時間。不過可以利用dealloc方法防止忘記清理這些資源

2.不要在dealloc里誰便調(diào)用其他方法。如果調(diào)用的方法執(zhí)行某些異步任務(wù),那么等到任務(wù)結(jié)束時,系統(tǒng)已經(jīng)銷毀了這個對象。這很容易引起應(yīng)用崩潰(因為已經(jīng)無法回調(diào)到此對象);調(diào)用自己的方法自己的方法,因為對象處于正在回收狀態(tài)

了解更多請參考:Effective Objective-C 2.0 第31條

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

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

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