1 循环引用就是当self 拥有一个block的时候,在block 又调用self的方法。形成你中有我,我中有你,谁都无法将谁释放的困局。
解决办法:
__weak typeof (self) weakSelf = self;
如:
@property(nonatomic, readwrite, copy) completionBlock completionBlock;
//========================================
__weak typeof(self) weakSelf = self;
self.completionBlock = ^ {
if (weakSelf.success) {
weakSelf.success(weakSelf.responseData);
}
};
responseData 是self的另一个属性。
iOS block机制
block是一个代码块。在objc中通常使用block实现代理方法实现的功能,也就是回调。使用代理需要设置代理的数据接收者,而且代理方法是被分离开来处理的,block可以将这些分离的代码放到一个代码块中。
作用:
1.保存代码。一段代码在合适的时间执行(例如请求成功时弹出一个提示框)。
2.block一般用来两个的类的数据逆传递(例如修改昵称的时候)
3.block也可以将一个操作当做参数来传递
本文详细解析了循环引用的概念及其在iOS开发中的常见问题,通过实例展示了如何利用block机制解决循环引用问题,并阐述了block在数据逆传递、回调功能实现等场景的应用。同时,文章还介绍了block在iOS开发中的核心作用及注意事项。
973

被折叠的 条评论
为什么被折叠?



