【发布时间】:2010-10-15 11:53:32
【问题描述】:
当主(唯一)关闭时,如何正确退出 Mac OS X 应用程序?
我知道NSWindowDelegate 中有一个方法- (void)windowWillClose:(NSNotification *)notification。但它在我的情况下不太合适,因为它被称为 before NSWindow closes。
【问题讨论】:
当主(唯一)关闭时,如何正确退出 Mac OS X 应用程序?
我知道NSWindowDelegate 中有一个方法- (void)windowWillClose:(NSNotification *)notification。但它在我的情况下不太合适,因为它被称为 before NSWindow closes。
【问题讨论】:
您不能有windowDidClose 事件,因为伴随它的通知将持有一个无效对象(窗口很可能在关闭时被释放)。为了实现您的需要,让您的类成为应用程序的委托,并实现以下方法:
- (BOOL) applicationShouldTerminateAfterLastWindowClosed: (NSApplication *) theApplication;
从该方法返回YES。
如果您的控制器对象在MainMenu.nib 中有一个实例,只需从文件所有者(即 MainMenu.nob 文件中的应用程序对象)建立连接。从 File's Owner 控制并拖动到您的对象,然后连接代理出口。
或者在源代码中,在控制器对象的 init 方法中添加这样的内容:
[NSApp setDelegate: self];
【讨论】:
NSApplicationDelegate 中没有注意到这个方法。 :)