假设我有一个对象应该在应用程序的整个生命周期中作为单例存在。这个对象是否可以包含一个强引用,例如,将NSTimer
自身作为计时器的目标?这将是一个保留周期,但我没有看到任何不利之处。dealloc
当操作系统尝试释放内存时,无论如何都不需要调用。
问问题
77 次
2 回答
3
听起来不错。您有一个单例对象,这意味着一旦创建,它将在应用程序的整个生命周期中持续存在。为了配合它,您有一个计时器,该计时器也将在应用程序的整个生命周期内持续存在。因此,一旦您确保了它们的持久性(即它们都被保留),就没有需要管理的内存了。只要应用程序存在,它们就会一直存在,在这种情况下,这正是您想要的。正如您的问题所暗示的那样,故事中有一个保留周期(由于 NSTimer 的特殊性)这一事实几乎是次要的。
于 2014-03-29T21:32:43.150 回答
0
没有保留周期。一旦完成射击,计时器就会释放它的目标。
保留周期是两个对象永远相互保留。不是临时的。
于 2014-03-30T01:30:25.917 回答