当应用程序终止时,我需要运行一些代码。我注册了我的控制器的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 文档。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top