Cocoa 清理finalize和dealloc中的变量

Cocoa 清理finalize和dealloc中的变量,cocoa,garbage-collection,Cocoa,Garbage Collection,是否有一个在finalize之前调用的方法可以像我通常使用dealloc一样用于清理? 在禁用GarbageCollection的情况下,在dealloc方法中,我进行清理,比如设置public、reserved和instance变量 设置为nil(这将释放并将指针设置为nil) 苹果说,如果打开GC,就不应该在finalize方法中这样做 假设我使用保留的NSTimer属性创建了一个NSView子类。为了确保计时器无效,我需要在解除分配子类之前/期间对其调用invalidate。在GC关闭的情

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

在禁用GarbageCollection的情况下,在dealloc方法中,我进行清理,比如设置public、reserved和instance变量 设置为nil(这将释放并将指针设置为nil)

苹果说,如果打开GC,就不应该在finalize方法中这样做

假设我使用保留的NSTimer属性创建了一个NSView子类。为了确保计时器无效,我需要在解除分配子类之前/期间对其调用invalidate。在GC关闭的情况下,我只需说[self.time invalidate],并在dealoc方法中将其设置为nil

然而,在启用GC的情况下,似乎唯一的方法是为视图子类创建一个iBulet。然后,在删除视图之前,我需要使计时器无效


我宁愿不必为我的所有自定义视图或控件制作插座……有更好或更自动的方法来实现这一点吗

没有。如果您有一个自定义控件,并且您有保留某些内容的变量。您需要为该控件创建一个出口,并清理保留的变量。

否。如果您有一个自定义控件,并且您有保留某些内容的变量。您需要为该控件创建一个出口,并清理保留的变量