2034-内存泄露问题-block 循环引用

1 在传进去 block 块儿 之前 防止 循环引用
weakself 引用 来调用 self 的 方法 变量
__weak typeof(self) weakSelf = self;
或者
__weak MyController *weakSelf = self

执行block方法体的时候
转换为强引用
MyController* strongSelf = weakSelf; if (!strongSelf) { return; }

weakself 的 宏定义

define WS(weakSelf) __weak __typeof(&*self)weakSelf = self;

注释:

001、block方法常用声明:@property (copy) void(^MyBlock)(void); 如果超出当前作用域之后仍然继续使用block,那么最好使用copy关键字,拷贝到堆区,防止栈区变量销毁。

002、创建block匿名函数之前一般需要对self进行weak化,否则造成循环引用无法释放controller:

__weak MyController weakSelf = self 或者 __weak __typeof(self) weakSelf = self;
执行block方法体的时候也可以转换为强引用之后再使用:MyController
strongSelf = weakSelf; if (!strongSelf) { return; }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容