【发布时间】:2014-05-09 08:10:26
【问题描述】:
假设我有一个对象应该在应用程序的整个生命周期中作为单例存在。这个对象是否可以包含,比如说,对NSTimer 的强引用,并将其自身作为计时器的目标?这将是一个保留周期,但我没有看到任何不利因素。当操作系统尝试释放内存时,无论如何都不需要调用dealloc。
【问题讨论】:
-
我想知道:你最终会使计时器无效吗?您最终是否将计时器引用设置为 nil?换句话说,我理解一个永远存在的单例对象的意义,但是拥有一个永远存在的 NSTimer 对象有什么意义吗?
-
如果计时器打算在应用程序的生命周期内运行,我想知道为什么我需要使无效或设置为零......除了清理之外还有什么理由吗?这种清理的目的是什么?
-
NSTimer 不应由您保留。添加到 NSRunLoop 时系统会保留。
-
@Rafal 保留 NSTimer 没有错。
-
如果对象在应用程序的整个生命周期中都存在,那么有一个保留周期是完全可以的。由于您永远不需要释放它,因此保留周期不会受到任何伤害。
标签: cocoa-touch cocoa memory-management retain-cycle