applicationWillTerminate

applicationWillTerminate

我想在应用程序终止时做一些事情,所以我在 AppDelegate 中添加了 applicationShouldTerminate:applicationWillTerminate 方法。但是,当我从 XCode 运行我的应用程序然后按 ⌘Q 时,这两种方法都不会被调用。

现在我通过记录和调用 printf 进行测试,当我退出我的应用程序时,我在任何地方都看不到任何输出。 documentation 似乎表明这应该有效。谷歌没有产生任何有用的东西,在 GitHub 上搜索示例代码主要返回观察其他应用程序被终止的应用程序。

为什么 applicationShouldTerminate:applicationWillTerminate 没有被调用?

这是我的应用程序委托(delegate)中的这些方法实现:

- (NSApplicationTerminateReply)applicationShouldTerminate:(NSNotification *)aNotification {
    printf("printf applicationShouldTerminate");
    NSLog(@"NSLog applicationShouldTerminate");
    return NSTerminateNow;
}

- (void)applicationWillTerminate:(NSNotification *)aNotification {
    printf("printf applicationWillTerminate");
    NSLog(@"NSLog applicationWillTerminate");
}

(我还通过在 Xcode 中创建一个全新的项目进行了测试,您可以在 https://github.com/noahlt/TestTerminator 找到该项目)。

最佳答案

我通过编辑 Info.plist 并将 Application can be killed immediately when user is shutting down or logging out 设置为 NO 来解决这个问题。

objective-c - applicationWillTerminate 和 applicationShouldTerminate 不能在 macOS 上运行?-LMLPHP

Xcode 自动生成 applicationWillTerminate 的方法 stub 对我来说很奇怪,但默认情况下由于这个 Info.plist 键它不起作用。为了将来引用,我正在运行 Xcode 版本 11.2.1 (11B500)。

(在 Apple Developer forums 上找到了这个答案。)

关于objective-c - applicationWillTerminate 和 applicationShouldTerminate 不能在 macOS 上运行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59760604/

10-11 10:31