NSWindow关闭时退出应用程序

Ale*_*iks 10 macos nswindow

当主(唯一)关闭时,如何正确退出Mac OS X应用程序?

我知道有一种方法- (void)windowWillClose:(NSNotification *)notificationNSWindowDelegate.但它在我的情况下不太合适,因为它 NSWindow关闭之前被调用.

小智 28

您不能拥有windowDidClose事件,因为伴随它的通知将持有一个无效的对象(该窗口很可能在关闭时被释放).要实现您的需要,请将您的类作为Application的委托,并实现以下方法:

- (BOOL) applicationShouldTerminateAfterLastWindowClosed: (NSApplication *) theApplication;
Run Code Online (Sandbox Code Playgroud)

从那个方法,返回YES.

如果您的控制器对象中有一个实例MainMenu.nib,只需从File的Owner(这意味着MainMenu.nob文件中的Application Object)建立连接.控制 - 从文件所有者拖动到您的对象,并连接代理插座.

或者在源代码中,在控制器对象的init方法中输入这样的内容:

[NSApp setDelegate: self];
Run Code Online (Sandbox Code Playgroud)