最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Objective-C中block循環(huán)引用問題詳解

 更新時間:2019年06月17日 08:30:38   作者:二師兄  
這篇文章主要給大家介紹了關(guān)于Objective-C中block循環(huán)引用問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Objective-C具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

目標(biāo):block執(zhí)行過程中,self不會釋放;執(zhí)行完可以釋放。

最初

block中直接使用self會強引用。

self.myBlock = ^() {
 [self doSomething];
};

或者使用了對象的屬性

self.myBlock = ^() {
 NSString *str = _str;
 NSString *str2 = self.str;
};

在這樣的情況下,self強引用block,block也持有該對象,導(dǎo)致循環(huán)引用。

要注意的是,只有在self強引用block的時候才會有這樣的問題。一般使用GCD或NSOperation時使用的內(nèi)聯(lián)block是不會出現(xiàn)循環(huán)引用的。

加入weak self

__weak __typeof(self) weakSelf = self;
self.myBlock = ^() {
 [weakSelf doSomething];
};

這樣,self持有了block,但block對self是弱引用,就不會導(dǎo)致循環(huán)引用了。

而在[weakSelf doSomething]過程中,self是不會釋放的,完美。

但是,如果是這樣呢?

__weak __typeof(self) weakSelf = self;
self.myBlock = ^() {
 [weakSelf doSomething];
 [weakSelf doSomething2];
};

在[weakSelf doSomething]和[weakSelf doSomething2]之間,self可能會被釋放掉。這可能會導(dǎo)致奇怪的問題。

加入strong self

__weak __typeof(self) weakSelf = self;
self.myBlock = ^() {
 __strong __typeof(self) strongSelf = weakSelf;
 [strongSelf doSomething];
 [strongSelf doSomething2];
};

這樣,block既沒有持有self,又能保證block在執(zhí)行過程中self不被釋放,真正達到了最初的目標(biāo)。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • IOS開發(fā)中加載大量網(wǎng)絡(luò)圖片優(yōu)化方法

    IOS開發(fā)中加載大量網(wǎng)絡(luò)圖片優(yōu)化方法

    這篇文章主要介紹了IOS開發(fā)中加載大量網(wǎng)絡(luò)圖片如何優(yōu)化的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • IOS中UIImageView方法實現(xiàn)簡單動畫

    IOS中UIImageView方法實現(xiàn)簡單動畫

    這篇文章主要介紹了IOS中UIImageView方法實現(xiàn)簡單動畫的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 詳解iOS應(yīng)用使用Storyboard布局時的IBOutlet與IBAction

    詳解iOS應(yīng)用使用Storyboard布局時的IBOutlet與IBAction

    這篇文章主要介紹了iOS應(yīng)用使用Storyboard布局時的IBOutlet與IBAction,文中還附帶講解了為什么IBOutlet屬性是weak的,需要的朋友可以參考下
    2016-04-04
  • IOS簡單實現(xiàn)瀑布流UICollectionView

    IOS簡單實現(xiàn)瀑布流UICollectionView

    這篇文章主要為大家介紹了IOS簡單實現(xiàn)瀑布流UICollectionView的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 簡潔易用的iOS引導(dǎo)頁制作

    簡潔易用的iOS引導(dǎo)頁制作

    這篇文章主要為大家詳細(xì)介紹了iOS引導(dǎo)頁的制作方法,可滿足一般設(shè)計的需求,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 淺談iOS 屏幕方向那點事兒

    淺談iOS 屏幕方向那點事兒

    這篇文章主要介紹了淺談iOS 屏幕方向那點事兒,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • iOS仿網(wǎng)易新聞滾動導(dǎo)航條效果

    iOS仿網(wǎng)易新聞滾動導(dǎo)航條效果

    這篇文章主要為大家詳細(xì)介紹了iOS仿網(wǎng)易新聞滾動導(dǎo)航條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • iOScollectionView廣告無限滾動實例(Swift實現(xiàn))

    iOScollectionView廣告無限滾動實例(Swift實現(xiàn))

    本篇文章主要介紹了iOScollectionView廣告無限滾動實例,可以實現(xiàn)廣告無限滾動,有興趣的可以了解一下。
    2016-11-11
  • IOS觀察者設(shè)計模式

    IOS觀察者設(shè)計模式

    什么是觀察者模式 什么是觀察者模式?你曾經(jīng)訂閱過報紙嗎?在訂閱報紙的時候,你不用去任何地方,只需要將你的個人地址信息以及訂閱信息告訴出版社,出版社就知道如何將相關(guān)報紙傳遞,本文給大家介紹ios觀察者模式,感興趣的朋友一起看看吧
    2015-12-12
  • Objective-C 代碼與Javascript 代碼相互調(diào)用實例

    Objective-C 代碼與Javascript 代碼相互調(diào)用實例

    這篇文章主要介紹了Objective-C 代碼與Javascript 代碼相互調(diào)用實例的相關(guān)資料,現(xiàn)在的APP 應(yīng)用有時候會調(diào)用網(wǎng)頁上的內(nèi)容,為了增加用戶體驗,這里寫下個實例,需要的朋友可以參考下
    2016-10-10

最新評論

永昌县| 池州市| 乐安县| 讷河市| 玉山县| 巨野县| 江都市| 铁岭县| 道真| 称多县| 宝坻区| 镇远县| 从江县| 宜阳县| 通化市| 周至县| 乐昌市| 集贤县| 历史| 东兰县| 香河县| 剑阁县| 收藏| 汉寿县| 西宁市| 绥宁县| 商南县| 徐闻县| 元朗区| 孝昌县| 桑日县| 肇东市| 越西县| 盐山县| 沭阳县| 韶山市| 马尔康县| 黎城县| 灌南县| 韩城市| 阳原县|