亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

最初

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

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

或者使用了對象的屬性

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

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

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

加入weak self

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

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

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

但是,如果是這樣呢?

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

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

加入strong self

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

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

總結

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

相關文章

  • iOS在頁面銷毀時如何優(yōu)雅的cancel網絡請求詳解

    iOS在頁面銷毀時如何優(yōu)雅的cancel網絡請求詳解

    這篇文章主要給大家介紹了關于iOS在頁面銷毀時如何優(yōu)雅的cancel網絡請求的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-05-05
  • iOS開發(fā)中文件的上傳和下載功能的基本實現

    iOS開發(fā)中文件的上傳和下載功能的基本實現

    這篇文章主要介紹了iOS開發(fā)中文件的上傳和下載功能的基本實現,并且下載方面講到了大文件的多線程斷點下載,需要的朋友可以參考下
    2015-11-11
  • iOS指紋識別的簡單應用

    iOS指紋識別的簡單應用

    這篇文章主要為大家詳細介紹了iOS指紋識別的簡單應用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • iOS利用手機攝像頭測心率

    iOS利用手機攝像頭測心率

    這篇文章主要為大家詳細介紹了iOS利用手機攝像頭測心率的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • IOS collectionViewCell防止復用的兩種方法

    IOS collectionViewCell防止復用的兩種方法

    這篇文章主要介紹了IOS collectionViewCell防止復用的兩種方法的相關資料,需要的朋友可以參考下
    2016-11-11
  • ios基于UITableViewController實現列表

    ios基于UITableViewController實現列表

    這篇文章主要介紹了ios基于UITableViewController實現列表的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 一篇文章讓你看懂IOS中的block為何再也不需要WeakSelf弱引用

    一篇文章讓你看懂IOS中的block為何再也不需要WeakSelf弱引用

    這篇文章主要給大家介紹了關于IOS中block為何再也不需要WeakSelf弱引用的相關資料,文中通過示例代碼介紹的非常詳細,對各位iOS開發(fā)者們具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • iOS畫出精美的圖表方法示例

    iOS畫出精美的圖表方法示例

    這篇文章主要給大家介紹了關于iOS如何畫出精美的圖表的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • iOS 二維碼掃描和應用跳轉

    iOS 二維碼掃描和應用跳轉

    本文講解如何使用原生框架實現二維碼掃描功能,并且進行掃描后的項目跳轉。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • 談談iOS中的幾種鎖

    談談iOS中的幾種鎖

    這篇文章主要介紹了談談iOS中的幾種鎖,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-11-11

最新評論