iOS __strong __weak @Strongify @Weakify

@Strongify,@Weakify主要是在block中使用.

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

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

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

 

大概用例:

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

 

详细讲解文章:

点击跳转

posted @ 2016-02-19 13:01  Ficow  阅读(641)  评论(0编辑  收藏  举报