保留周期有时可以吗?

时间:2014-03-29 21:14:05

标签: cocoa-touch cocoa memory-management retain-cycle

假设我有一个对象应该作为应用程序整个生命周期的单例存在。这个对象是否可以包含对NSTimer的强引用,并将其自身作为计时器的目标?这将是一个保留周期,但我没有看到任何缺点。当操作系统尝试释放内存时,无论如何都不需要调用dealloc

2 个答案:

答案 0 :(得分:3)

听起来不错。你有一个单例对象,这意味着一旦创建它就会在应用程序的生命周期内持续存在。为了配合它,你有一个计时器,它也会在应用程序的生命周期内持续存在。因此,一旦确保了它们的持久性(即它们都被保留),就没有可以管理的内存。只要应用程序执行,它们都会存在,在这种情况下,这正是您想要的。正如您的问题所暗示的那样,故事中存在保留周期的事实(因为NSTimer的特性)几乎是次要的。

答案 1 :(得分:0)

没有保留周期。一旦完成射击,计时器就会释放它的目标。

保留周期是两个物体永远保持对方的时间。不是暂时的。