美文网首页
Block 04 - 循环引用

Block 04 - 循环引用

作者: 石头89 | 来源:发表于2019-08-05 16:29 被阅读0次

Block 04 - 循环引用

在 ARC 环境下解决循环引用

  • 使用 __weak、__unsafe_unretained:

    __weak typeof(self) weakSelf = self;
    self.block = ^{
        [weakSelf sayHello];
    };
    
    __unsafe_unretained typeof(self) weakSelf = self;
    self.block = ^{
        [weakSelf sayHello];
    };
    
  • 使用 __block(不推荐):

    __block typeof(self) weakSelf = self;
    self.block = ^{
        [weakSelf sayHello];
        weakSelf = nil;
    };
    

    必须调用 Block,Block 内部必须将 weakSelf 置为 nil。

在 MRC 环境下解决循环引用

  • 使用 __unsafe_unretained:

    __unsafe_unretained typeof(self) weakSelf = self;
    self.block = ^{
        [weakSelf sayHello];
    };
    
  • 使用 __block:

    __block typeof(self) weakSelf = self;
    self.block = ^{
        [weakSelf sayHello];
    };
    

相关文章

网友评论

      本文标题:Block 04 - 循环引用

      本文链接:https://www.haomeiwen.com/subject/eaimdctx.html