#warning如果block(block只要是copy的就会在堆中)在堆中, block引用外界的对象,会导致循环引用
// __weak IWCommonArrowItem *weakClearCache = clearCache;
// __weak IWGeneralViewController *weakSelf = self;
// typeof可以获取括号中传递的值的真实类型
// typeof(10) a = 10; == int a = 10;
// __weak typeof(clearCache) weakClearCache = clearCache;
// __weak typeof(self) weakSelf = self;
//如果是用__weak修饰,当对象销毁之后会自动将变量的值设置为nil
//而如果__unsafe_unretained不会
__unsafe_unretainedtypeof(clearCache) weakClearCache = clearCache;
__unsafe_unretainedtypeof(self) weakSelf =self;
/**
如何在开发中,避免block出现循环引用呢
1>每次碰到self的时候,要小心,需要思考一下
2>充分利用dealloc方法
3
解决方法:
__weak CZViewController *weakSelf = self;
*/
//为了保证代码的安全性,苹果在设计block的时候
// block引用外部变量时,默认会做copy操作,copy本身也会做一次强引用
//在现在的代码中,如果block中有对self的强引用,出现循环引用的情况
//解决方法,在oc中,对象默认都是强引用,__weak可以变成弱引用
网友评论