常见循环引用
小于 1 分钟
常见循环引用
block
self将block作为自己的属性变量,而在block的方法体里面又引用了 self 本身,此时就很简单的形成了一个循环引用。
__weak typeof(self) weakSelf = self;
__strong typeof (weakSelf) strongSelf = weakSelf;
Delegate
@property (nonatomic, weak) id <TestDelegate> delegate;
如果将 weak 改为 strong,则会造成循环引用
NSTimer
NSTimer 的 target 对传入的参数都是强引用(即使是 weak 对象) 解决:strong 改为 weak
- 封装成block timer
- 使用iOS10后系统的block timer
- 使用GCD封装计时器
父类与子类
例如在使用UITableView 的时候,将 UITableView 给 Cell 使用,cell 中的 strong 引用会造成循环引用。