为什么不调用dealloc?

时间:2011-02-28 04:54:55

标签: objective-c cocoa garbage-collection

我正在为Cocoa编写一些测试代码。已将AppController对象放在IB中。在AppController中声明并初始化NSMutableArray。一切运行正常,因为用户可以输入数组,其内容显示在NSTableView等。

然后我将一个- (void) dealloc {}方法添加到AppController。我的问题是:当按下“红色任务”按钮终止程序时,为什么根本没有被调用?只是我希望在程序结束之前显式释放与数组相关的内存。我需要明确释放数组吗? (没有垃圾收集)

2 个答案:

答案 0 :(得分:3)

当程序终止时,内存不会被释放,因为与进程关联的所有内存都会在它终止时自动批量释放。如果您需要在终止时执行非内存相关的清理,请使用NSApp的委托方法-applicationWillTerminate:

答案 1 :(得分:2)

当程序结束执行时,它不再需要占用任何内存空间。操作系统将自动销毁与程序相关的进程,并回收它在其生命周期中占用的内存。因此,无论是否在程序终止时明确解除分配都无关紧要。