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也可以将一个操作当做参数来传递