如何解除循环引用

定义block的时候,会对外部变量做一次copy,会对self进行强引用

1.__weak是ios 5.0 推出的

 __weak 相当于weak 本身是弱引用,但是如果对象被释放,执行的地址会指向nil 更安全

__weak typeof(self) weakSelf = self;

2__unsafe_unretained 是ios4.0 推出的,相当于assign,不会做强引用,但是日过对象被释放,内存地址保持不变,如果此时在调用,快就会出现野指针错误 MRC经典错误,EXC_BAD_ACCESS

__unsafe_unretained typeof(self) weakSelf = self;

3.__weak typeof(self) weakSelf = self; __strong typeof(self) strongSelf  = weakSelf; strongSelf 强引用,对weakSelf 进行强引用,本意,希望在异步完成后,继续执行回调代码   开发中有人会用这种代码,认识就好!

挥毫泼墨,书写人生篇章
原文地址:https://www.cnblogs.com/Jusive/p/5081303.html