在dealloc

时间:2016-11-01 10:54:16

标签: ios cocoa-touch memory-management nstimer dealloc

关注this question,更具体地说,this comment

  

因为在定时器的目标也是其所有者

的常见情况下,保留(又称强引用)循环

我想知道为什么dealloc不是使NSTimer无效的好地方。

我记得在不自动重复NSTimer失效的情况下分析我的应用,然后在dealloc中失效,并正确释放内存。

dealloc在最新的iOS中有不同的工作方式吗?

事实上,在任何dealloc重新分配之前,您是否已被覆盖NSObject?那么dealloc甚至用于什么?如果不手动取消分配相应对象的属性?

1 个答案:

答案 0 :(得分:1)

当只有dealloc个引用指向此对象(没有人保留)时,ARC才会释放(并调用strong)个对象。

NSTimer创建strong引用,它将保留target

这意味着,dealloc将不会被调用,因为NSTimer仍然具有strong对象的引用。如果没有dealloc,则表示NSTimer永远不会失效...导致内存泄漏甚至崩溃。

invalidate或[{1}}成为零时,dealloc计时器有办法。看看answer here