Objective c 应用程序将终止,而应用程序应终止于';你不能在macOS上运行吗?
我想在应用程序终止时做一些事情,因此我向我的AppDelegate添加了Objective c 应用程序将终止,而应用程序应终止于';你不能在macOS上运行吗?,objective-c,macos,cocoa,nsapplication,nsapplication-delegate,Objective C,Macos,Cocoa,Nsapplication,Nsapplication Delegate,我想在应用程序终止时做一些事情,因此我向我的AppDelegate添加了applicationShouldTerminate:和applicationWillTerminate方法。但是,当我从XCode运行我的应用程序,然后按⌘Q,两个方法都不会被调用 现在我正在通过记录和调用printf进行测试,当我退出我的应用程序时,我在任何地方都看不到任何输出。这似乎表明这应该是可行的。谷歌并没有产生任何有用的东西,搜索GitHub(例如代码)时,大部分返回的应用程序都会看到其他应用程序被终止 为什么应
applicationShouldTerminate:
和applicationWillTerminate
方法。但是,当我从XCode运行我的应用程序,然后按⌘Q
,两个方法都不会被调用
现在我正在通过记录和调用printf
进行测试,当我退出我的应用程序时,我在任何地方都看不到任何输出。这似乎表明这应该是可行的。谷歌并没有产生任何有用的东西,搜索GitHub(例如代码)时,大部分返回的应用程序都会看到其他应用程序被终止
为什么应用程序不应该终止:
和应用程序将终止
被调用
以下是我的应用程序委托中的方法实现:
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSNotification *)aNotification {
printf("printf applicationShouldTerminate");
NSLog(@"NSLog applicationShouldTerminate");
return NSTerminateNow;
}
- (void)applicationWillTerminate:(NSNotification *)aNotification {
printf("printf applicationWillTerminate");
NSLog(@"NSLog applicationWillTerminate");
}
(我还通过在Xcode中创建一个全新的项目进行了测试,您可以在中找到)。我通过编辑
Info.plist
和设置应用程序可以在用户关闭或注销到NO
时立即终止
我觉得很奇怪,Xcode自动为应用程序生成方法存根willterminate
,但是默认情况下,由于这个Info.plist
键,它不起作用。为了将来的参考,我运行的是Xcode版本11.2.1(11B500)
(在上找到此答案。)对我有效-您如何创建项目,以及“退出”菜单项连接到了什么操作?@red\u nerge我刚刚通过创建一个全新的Xcode项目进行了测试。还是不行。您可以在此处看到我的完整项目: