2011-02-28 89 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

當程序結束執行時,它不再需要佔用任何內存空間。操作系統將自動銷燬與程序相關的進程並回收其在其使用期限內佔用的內存。因此,無論您是否明確地釋放或不僅僅是程序終止並不重要。

相關問題