在finalize和dealloc中清理vars

时间:2011-12-15 18:08:55

标签: cocoa garbage-collection

是否有一个在finalize之前调用的方法,我可以像通常使用dealloc一样用于清理?

关闭GarbageCollection,在dealloc方法中,我会像设置public,retain,instance vars一样进行清理 为nil(将释放并将指针设置为nil)。

Apple说如果打开GC,你不应该在finalize方法中这样做。

假设我使用保留的NSTimer属性创建一个NSView子类。为了确保定时器无效,我需要在子类被释放之前/之前调用invalidate。关闭GC后,我只是说[self.time invalidate]并在dealloc方法中将其设置为nil。

然而,使用GC,似乎唯一的方法是将IBOulet作为视图子类。然后,在删除视图之前,我需要使计时器无效。

我不想为我的所有自定义视图或控件制作插座...是否有更好或更自动的方法来执行此操作?

1 个答案:

答案 0 :(得分:1)

不。如果你有一个自定义控件,你有vars保留一些东西。您需要为该控件创建一个插座并清理您保留的变量。