OC內(nèi)存管理: _weak與_unsafe_unretained的區(qū)別

這兩者功能上講同屬于弱引用,指向?qū)ο蟮荒艹钟袑ο髮嵗?,但是在對象的銷毀處理中有區(qū)別。

弱引用的意義在于能夠避免因為強引用對象互相引用帶來的內(nèi)存泄漏問題。

_weak與_unsafe_unretained兩者的區(qū)別:

當(dāng)_unsafe_unretained指向的對象被銷毀后,該指針仍然指向該對象之前的地址,變?yōu)橐爸羔槨?/p>

而_weak則會置空為nil。

那么為什么_unsafe_unretained仍需要使用:

1._weak需要檢查對象是否被釋放,所有需要追蹤一些信息。

2.如果一個對象擁有大量的弱引用,當(dāng)它被廢棄時就需要遍歷_weak表,將表中的指針置空。

簡單說就是在相同情況下,_weak的性能開銷比較大。

_unsafe_unretained較_weak的速度比較快,但在對象生命周期不確定的情況下有崩潰風(fēng)險。

故當(dāng)對象聲明周期明確時,_unsafe_unretained是更有效的方式。

最后編輯于
?著作權(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ù)。

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