2020-12-03 強(qiáng)弱舞

1.參考文章http://www.itdecent.cn/p/bc794fa07167
常規(guī)寫法:

__weak typeof(self)weakSelf = self;
block = ^(){
    __strong typeof(weakSelf)strongSelf = weakSelf;
};

類似高級(jí)寫法
@weakify 將當(dāng)前對(duì)象聲明為weak..
這樣block內(nèi)部引用當(dāng)前對(duì)象,就不會(huì)造成引用計(jì)數(shù)+1可以破解循環(huán)引用

@strongify 相當(dāng)于聲明一個(gè)局部的strong對(duì)象,等于當(dāng)前對(duì)象.
可以保證block調(diào)用的時(shí)候,內(nèi)部的對(duì)象不會(huì)釋放

@weakify(self);
    self.blk = ^{
        @strongify(self);
        NSLog(@"In Block : %@",self);
    };

疑問一:
為什么block里面使用強(qiáng)引用?

答:你有沒有遇到過耗時(shí)block,你有沒有寫過block里面的一大堆代碼呢?
如果這一大堆代碼里多處地方使用了weaskself呢?
如果這一大堆代碼里有對(duì)weaskself.array進(jìn)行了遍歷了呢?
那么block在使用weakself的時(shí)候,weakself指向的對(duì)象會(huì)不會(huì)被釋放呢?
它是可能被釋放的,那么就會(huì)出現(xiàn)崩潰了。

block里面是{}括起來的,里面的strong引用是創(chuàng)建一個(gè)強(qiáng)引用的對(duì)象指針,被引用對(duì)象的引用計(jì)數(shù)加一,但是這個(gè)對(duì)象指針是個(gè)局部對(duì)象,他的生命周期只在這個(gè){}里面。在到達(dá)}時(shí),局部對(duì)象指針就被釋放了。所以,它保證block執(zhí)行期間,弱引用對(duì)象不會(huì)被釋放。

疑問二:
里面使用強(qiáng)引用,為什么不會(huì)循環(huán)引用?

答:不會(huì),block里面那個(gè)強(qiáng)引用只是 局部變量,它是屬于{}的,屬于當(dāng)時(shí)執(zhí)行代碼的上下文環(huán)境中的,它保存在棧上的。所以它不被block復(fù)制到堆上,或者形成強(qiáng)引用。
block擁有的還是哪個(gè)弱引用。

?著作權(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),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 未完,待更新 一、必備題 1、AFN 原理 鏈接:AFNetworking源碼——基本架構(gòu) - 簡(jiǎn)書 2、SDWe...
    小熊_07cb閱讀 2,996評(píng)論 3 27
  • Oc基礎(chǔ) 1、#import的用途 1>#import與#include一樣,拷貝文件的內(nèi)容 2>可以自動(dòng)防止文件...
    開著保時(shí)捷堵你家門口閱讀 988評(píng)論 0 0
  • Block的引用循環(huán)問題 (ARC & non-ARC) 2014-03-25 14:56 24799人閱讀 評(píng)論...
    心愿2016閱讀 519評(píng)論 0 0
  • 本篇文章是承接上篇文章 iOS 進(jìn)階+面試(一) 八、iOS 中內(nèi)省的幾個(gè)方法? 對(duì)象在運(yùn)行時(shí)獲取其類型的能力稱...
    書寫不簡(jiǎn)單閱讀 1,648評(píng)論 0 11
  • 久違的晴天,家長(zhǎng)會(huì)。 家長(zhǎng)大會(huì)開好到教室時(shí),離放學(xué)已經(jīng)沒多少時(shí)間了。班主任說已經(jīng)安排了三個(gè)家長(zhǎng)分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,788評(píng)論 16 22

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