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

来源:互联网 发布:淘宝客为什么要用软件 编辑:程序博客网 时间:2024/06/05 05:19

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

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

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


//  私有成员变量@implementation SmartInfoViewController{    UIColor *lightColor;
    BOOL _isLoading;}//  在块中直接使用lightColor会造成retain cycleself.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;};
上边介绍的成员变量是对象类型的,如果是基础数据类型的怎么办?
// 通过创建一个方法,然后再调用
paint.colBlock = ^(UIColor *col) {    [ws resetIsLoading];};
-(void)resetIsLoading{
    _isLoaing = NO;
}

原创粉丝点击