当主要(唯一的)关闭时,如何正确退出Mac OS X应用程序?
我知道- (void)windowWillClose:(NSNotification *)notification
中有一个方法NSWindowDelegate
。但它在我的情况下并不合适,因为它在 NSWindow
关闭之前被称为。
答案 0 :(得分:28)
您不能拥有windowDidClose
事件,因为随附的通知将持有无效对象(窗口很可能在关闭时已取消分配)。要实现您的需要,请将您的类作为Application的委托,并实现以下方法:
- (BOOL) applicationShouldTerminateAfterLastWindowClosed: (NSApplication *) theApplication;
从该方法返回YES
。
如果您的控制器对象在MainMenu.nib
中有一个实例,只需从File的所有者(这意味着MainMenu.nob文件中的Application Object)建立连接。控制 - 从文件所有者拖动到您的对象,并连接代理插座。
或者在源代码中,在控制器对象的init方法中输入类似的内容:
[NSApp setDelegate: self];