常见循环引用

木木木小于 1 分钟iOS优化循环引用

常见循环引用

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 引用会造成循环引用。

上次编辑于:
贡献者: perhapsdone