svi*_*tus 1 macos cocoa objective-c appkit
我有一些代码需要在应用程序终止时运行.我为NSApplicationWillTerminateNotification注册了我的控制器,如下所示:
[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(applicationWillTerminate:)
name: NSApplicationWillTerminateNotification
object: nil];
Run Code Online (Sandbox Code Playgroud)
现在,如果我启动我的应用程序并在前20秒内退出它, applicationWillTerminate就会被调用.如果我稍后退出该应用程序,则不会.我的应用程序中可能会导致此行为?我还试图将我的控制器设置为NSApplication的委托,但结果相同.有任何想法吗?
谢谢.
哦,这是XCode 3.2,Snow Leopard 10.6.1,使用10.5 SDK.在Debug和Release版本中都会发生.
有几个原因可能会发生这种情况.
如果您正在运行GC'd,您的观察者是否会在终止发生之前收集并最终确定?(我应该测试一下并提交一个bug,如果它确实存在,至少需要记录)
您的应用是静默崩溃还是直接调用exit()?
一般情况下,您不能指望收到终止通知,因为用户可能会强制退出它.
此外,在Snow Leopard中,有一项称为突然终止的功能,允许您的应用程序让系统知道杀死应用程序是安全的,而不是通过正常终止的rigamarole.它记录在NSProcessInfo文档中.
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |