美文网首页
2018-07-10 关于weakself

2018-07-10 关于weakself

作者: 北你妹的风 | 来源:发表于2018-07-12 15:52 被阅读6次

    在使用block时,会出现循环引用的问题。当block对象是属于当前对象本身时,如果再在block中使用当前对象的属性时,就会引起循环引用。

    eg:    self.theBlock = ^{

          [  self.showBtn  setTintColor:[UIColor clearColor]];

    }//此处会有循环引用,编译器会提示警告  Capturing 'self' strongly in this block is likely to lead to a retain cycle

    此时,weakself 就会派上用场,代码修改如下:

    typeof(self)  ___weak weakSelf = self;

     self.theBlock = ^{

          [  weakSelf.showBtn  setTintColor:[UIColor clearColor]];

    }

    不再有编译警告。

    总结:在使用block时,如果当前block被当前对像直接或间接持有的时候,在block体中再引用当前对象,要通过使用weakself 来引用。

    另外,在使用GDC异步调用时,是不需要weakself的。

    dispatch_async(........){

            self.name = @"";//可直接使用self

    }

    相关文章

      网友评论

          本文标题:2018-07-10 关于weakself

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