美文网首页
@strongify@weakify

@strongify@weakify

作者: 冲上云霄90 | 来源:发表于2016-07-07 21:21 被阅读50次

    @strongify以及@weakify宏命令的使用场景和原理

    主要是在block中使用

    (因为block一般都在对象内部声明.. 如果在block内部使用了当前对象的属性,就会造成循环引用(block拥有当前对象的地址,而当前对象拥有block的地址),而引起内存泄露,block和当前对象都无法释放.)

    • @weakify 将当前对象声明为weak.. 这样block内部引用当前对象,就不会造成引用计数+1可以破解循环引用

    • @strongify 相当于声明一个局部的strong对象,等于当前对象.可以保证block调用的时候,内部的对象不会释放

    大概相当于

     __weak  typeof(self) weakSelf = self;
    block = ^(){
        __strong  typeof(weakSelf)strongSelf = weakSelf;
        // strongSelf.property
    };
    

    相关文章

      网友评论

          本文标题:@strongify@weakify

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