iOS 代碼規(guī)范~避免循環(huán)引用

//聯(lián)系人:石虎QQ: 1224614774昵稱:嗡嘛呢叭咪哄

一、避免循環(huán)引用

如果【block內(nèi)部】使用【外部聲明的強引用】訪問【對象A】,那么【block內(nèi)部】會自動產(chǎn)生一個【強引用】指向【對象A】

如果【block內(nèi)部】使用【外部聲明的弱引用】訪問【對象A】,那么【block內(nèi)部】會自動產(chǎn)生一個【弱引用】指向【對象A】

__weak typeof(self)weakSelf = self;

dispatch_block_t block = ^{

[weakSelf doSomething];// weakSelf != nil

// preemption,weakSelf turned nil

[weakSelf doSomethingElse];// weakSelf == nil

};

二、最好這樣調(diào)用:

__weak typeof(self)weakSelf = self;

myObj.myBlock = ^{

__strong typeof(self)strongSelf = weakSelf;

if(strongSelf){

[strongSelf doSomething];// strongSelf != nil

// preemption,strongSelf still not nil(搶占的時候,strongSelf還是非nil的)

[strongSelf doSomethingElse];// strongSelf != nil }

else { // Probably nothing... return;

}

};

謝謝!!!

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