关于Block的循环引用
2016-08-25 本文已影响10人
紫云夕月
为什么不用__block 是因为通过引用来访问self的实例变量 ,self被retain,block也是一个强引用,引起循环引用,用__week是弱引用,当self释放时,weakSelf已经等于nil。
Blocks可以访问局部变量,但是不能修改,如果修改局部变量,需要加__block
__weak typeof(self) weakSelf = self;
为什么不用__block 是因为通过引用来访问self的实例变量 ,self被retain,block也是一个强引用,引起循环引用,用__week是弱引用,当self释放时,weakSelf已经等于nil。
Blocks可以访问局部变量,但是不能修改,如果修改局部变量,需要加__block
__weak typeof(self) weakSelf = self;