首页 > 代码库 > block块中引用成员变量引起内存泄漏问题
block块中引用成员变量引起内存泄漏问题
使用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块中引用成员变量引起内存泄漏问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。