block块中引用成员变量引起内存泄漏问题
Posted 多两口
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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块中引用成员变量引起内存泄漏问题的主要内容,如果未能解决你的问题,请参考以下文章