有时候我们会碰到这种情况,
__weak typeof(self) weakSelf = self;
[obj block:^(){
__strong typeof(weakSelf)strongSelf = weakSelf;
}];
我们都知道第一句是为了解决block的循环引用问题,那么在block中的语句是干什么用的呢?
网上查阅资料知道:
在block中调用self会引起循环引用,但是在block中需要对weakSelf进行 strong,保证代码在执行到block中,self不会被释放,当block执行完后, 会自动释放该strongSelf;
因为仅仅使用__weak去修饰变量,当别处把变量释放后,block中该变量也会被释放掉。
时间: 2024-11-03 21:36:23