Skip to content

Dealloc

AnimenzzzKJ edited this page Sep 27, 2019 · 1 revision

iOS中造成dealloc不调用的原因

  • ViewController中存在NSTimer

  • ViewController中有关的代理

一个比较隐秘的因素,你去找找与这个类有关的代理,有没有强引用属性?比如一个代理的delegate应该是 assign 的现在是retain,(╯‵□′)╯︵┻━┻,就是这个,它会影响你不让你调用dealloc,不信,就试试吧。(这个我还没有遇到过)。

  • ViewController中有Block 这个就是我我上面不进入dealloc的真正原因,Block体内使用实例变量也会造成循环引用,使得拥有这个实例的对象不能释放。 例如你这个类叫OneViewController,有个属性是NSString *name; 如果你在block体中使用了self.name,那样子的话这个类就没法释放。 要解决这个问题,MRC下只需 __block Viewcontroller *weakSelf = self; ARC下将__block 换为 __weak
Clone this wiki locally