未收到NsapplicationWillTerminateNotification
-
16-09-2019 - |
题
当应用程序终止时,我需要运行一些代码。我注册了我的控制器的nsapplicationwillterminatenotification,如下:
[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(applicationWillTerminate:)
name: NSApplicationWillTerminateNotification
object: nil];
现在,如果我启动我的应用程序并在前20秒内退出, applicationWillTerminate
被调用。如果我以后退出应用程序,则不会。我的应用程序可能会导致这种行为?我还试图将控制器设置为NSapplication的代表,结果相同。有任何想法吗?
谢谢。
哦,这是Xcode 3.2,Snow Leopard 10.6.1,使用10.5 SDK。发生在调试和发行版中。
解决方案
可能会发生这种情况的原因有很多。
如果您正在运行GC,您的观察者是否会在终止发生之前收集和最终确定? (如果至少需要记录,我应该对此进行测试并提交错误)
您的应用程序是直接静止崩溃还是直接调用exit()?
通常,您不能指望接收到的终止通知,因为用户可能会为此而退出武力。
另外,在Snow Leopard中,还有一个称为突然终止的功能,使您的应用程序可以让系统知道杀死该应用程序是安全的,而不是通过正常的终端rigamarole进行。它在 NSPROCESSINFO 文档。
不隶属于 StackOverflow