码迷,mamicode.com
首页 > 其他好文 > 详细

block块中引用成员变量引起内存泄漏问题

时间:2017-05-19 11:09:09      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:class   变量   span   注意   __strong   记录   ati   view   属性   

使用block要注意循环引用,因此在块中使用self前先使用__weak修饰生产弱引用

这里记录另一种情况:没有使用属性而是直接使用成员变量的时候

//  私有成员变量
@implementation SmartInfoViewController
{
    UIColor *lightColor;
}

//  在块中直接使用lightColor会造成retain cycle
self.colBlock = ^(UIColor *col) {
    lightColor = col; 
    // 等价于 self->lightColor = col;
};

解决办法

//  使用前先生成弱引用 
__weak typeof(self) ws = self;

paint.colBlock = ^(UIColor *col) {
    // 必须在内部__strong强引用
    __strong typeof(ws) ss = ws;
    ss -> lightColor = col;
};

 

block块中引用成员变量引起内存泄漏问题

标签:class   变量   span   注意   __strong   记录   ati   view   属性   

原文地址:http://www.cnblogs.com/xs514521/p/6877138.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!