applicationWillTerminate未调用

时间:2011-11-19 10:08:37

标签: macos cocoa application-close

我实现了applicationWillTerminate方法,但它永远不会被调用

-(void)applicationWillTerminate:(NSNotification *)notification
{
    [[NSApplication sharedApplication] terminate:self];
    NSLog(@"EOP");
}

如何在应用程序关闭之前执行一些代码?

由于

3 个答案:

答案 0 :(得分:5)

我刚刚添加了

-(BOOL) applicationShouldTerminateAfterLastWindowClosed:(NSApplication *) sender{
return YES;
}

现在applicationWillTerminate调用

答案 1 :(得分:1)

请在您的plist中设置一个密钥(UIApplicationExitsOnSuspend)至YES

  

键:UIApplicationExitsOnSuspend
  类型:布尔

  价值:是

答案 2 :(得分:1)

解决方案1:

在项目信息(NSSupportsSuddenTermination键)中将应用程序可立即终止设置为。 然后,applicationWillTerminate函数将在应用程序退出之前被调用。

解决方案2:

如果您需要取消终止,那么您应该覆盖applicationShouldTerminate函数

func applicationShouldTerminate(_ sender: NSApplication) -> NSApplication.TerminateReply {
    // Do some stuff before quitting for good
    return .terminateNow
}