關(guān)于block循環(huán)引用

如果在block中使用附有__strong修飾符的對象類型自動變量,那么當block從棧區(qū)拷貝到堆區(qū)時,該對象為block所持有。這樣容易引起循環(huán)引用.

__block,__weak和__unsafe_unretained都可避免循環(huán)引用,可他們有何不同呢?

使用__block的優(yōu)點如下:

通過__block變量控制對象的持有期間,再不能使用__weak修飾符的環(huán)境中不使用__unsafe_unretained的修飾符即可.(不必擔心懸垂指針)

在執(zhí)行block時可動態(tài)性的決定是否將nil或其他的對象賦值在__block變量中

使用__block的缺點如下:

為避免循環(huán)引用必須執(zhí)行block

在執(zhí)行了block語法,卻不執(zhí)行block的路徑時,無法避免循環(huán)引用。若由于block引發(fā)的循環(huán)引用時,根據(jù)block的用途選擇使用__block變量,__weak修飾符或者__unsafe_unretained修飾符來避免循環(huán)引用。

?著作權(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)容