首页 > 移动平台 > 详细

iOS @Strongify @Weakify

时间:2016-02-19 14:20:24      阅读:213      评论:0      收藏:0      [点我收藏+]

@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
};

 

详细讲解文章:

点击跳转

iOS @Strongify @Weakify

原文:http://www.cnblogs.com/ficow/p/5200667.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!