美文网首页
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