定义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 进行强引用,本意,希望在异步完成后,继续执行回调代码 开发中有人会用这种代码,认识就好!