何时block才会循环引用
-为什么Block会循环引用: 我们很多行为会导致Block的copy,而当Block被copy时,会对block中用到的对象产生强引用(ARC下)或者引用计数加一(MRC下)。
如下:
@property(nonatomic, readwrite, copy) completionBlock completionBlock;
//发生循环引用!怎么办?
self.completionBlock = ^ {
if (self.success) {
self.success(self.responseData);
}
}
};
@property(nonatomic, readwrite, copy) completionBlock completionBlock;
//完美解决
__weak typeof(self) weakSelf = self;
self.completionBlock = ^ {
if (weakSelf.success) {
weakSelf.success(weakSelf.responseData);
}
};
原文:http://www.cnblogs.com/crash-wu/p/5162321.html