不走dealloc的解决办法

不走dealloc的解决办法

当controller不走dealloc说明ARC认为你的controller还处于被持有状态,此时检查可能持有它的对象,过程可能会很痛苦。

容易忽视的地方:

  • 1.NSTimer.

    没有及时的invalidate,这样timer持有者controller,导致controller释放不掉

  • 2.delegate

    ARC机制下,delegate不需要强引用了,weak就可以了

  • 3.block

    weak strong dance一下,世界清净

  • 4.本身被强引用

    检查一下该controller是否是作为全局变量push出来的,如果是作为全局变量,那么他的上一级controller持有这该controller,dealloc仍然不会走。即

    1
    [self.navigationController pushViewController:全局controller animated:YES];

以上方法仍然不能找到原因的话也可以用instruments来查看对象的持有情况。点击这里

显示评论