1. 在block外面这样:__weak MyController *weakSelf = self 或者 __weak __typeof(self) weakSelf = self;
是为了防止强引用导致循环引用
2.执行block方法体的时候也可以转换为强引用之后再使用MyController* strongSelf = weakSelf; if (!strongSelf) { return; }
那么,里面变成强引用后,不是又导致循环引用了吗?有意思的就在这里,IOS中,block内部,对弱应用的强引用,不会影响对象在外部的释放,同时,保证内部该对象也不会被提前释放。这真是一个两全其美的办法。
时间: 2024-10-22 12:03:19