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

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

  • 关于weakSelf

    weakSelf一般用于防止block里对self的循环引用,如果在block里用到self通常会生声明一个wea...

  • _weak typeof(self) weakSelf = se

    原文地址 关于 _weak typeof(self) weakSelf = self; (一)内存管理原则1、默认...

  • Block  weakSelf  宏定义

    #define WeakSelf(weakSelf) __weak __typeof(&*self)weakSel...

  • 快速的定义一个weakSelf

    #define WS(weakSelf) __weak __typeof(&*self)weakSelf = self;

  • 防止MJ block循环引用

    #define WS(weakSelf) __weak __typeof(&*self)weakSelf = se...

  • 防止MJ block循环引用

    #define WS(weakSelf) __weak __typeof(&*self)weakSelf = se...

  • weakSelf的使用

    使用过weakself的都知道weakself的作用是为了避免循环引用而定义的。 使用weakself需要注意的三...

  • StrongSelf

    weakSelf : 防止循环引用 strongSelf: 防止释放 需要 强引用weakSelf,主要是处理一...

  • Block使用规则

    ARC下,关于block里面使用self、weakSelf、strongSelf,理解一直没有特别的透彻,今天花时...

网友评论

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

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