2011-02-28 91 views
0

我正在编写一些可可的测试代码。将AppController对象放入IB中。在AppController中声明并初始化一个NSMutableArray。一切运行正常,因为用户可以输入数组,并且其内容显示在NSTableView为什么dealloc不被调用?

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

回答

3

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

+0

因此,如果我希望使用委托方法,则需要指定一个作为委托的对象。我想我在某处曾经说过,可以让一个对象成为自己的代表。那是对的吗 ? – Stanley 2011-02-28 05:09:16

+0

当然。你可以让一个NSApplication子类成为它自己的委托。 – 2011-02-28 08:42:20

2

当程序结束执行时,它不再需要占用任何内存空间。操作系统将自动销毁与程序相关的进程并回收其在其使用期限内占用的内存。因此,无论您是否明确地释放或不仅仅是程序终止并不重要。

相关问题