【发布时间】:2011-11-17 00:52:03
【问题描述】:
我正在使用applicationWillTerminate: 来保存一些最后一分钟的东西。但问题是它永远不会被调用。如果我在方法的顶部做这样的事情:NSLog(@"Something"); 它不会被调用,也不会被输出到控制台。
有人知道为什么会这样吗?
【问题讨论】:
标签: ios cocoa-touch uiapplicationdelegate application-lifecycle
我正在使用applicationWillTerminate: 来保存一些最后一分钟的东西。但问题是它永远不会被调用。如果我在方法的顶部做这样的事情:NSLog(@"Something"); 它不会被调用,也不会被输出到控制台。
有人知道为什么会这样吗?
【问题讨论】:
标签: ios cocoa-touch uiapplicationdelegate application-lifecycle
来自 Apple 文档:
对于不支持后台执行或链接到 iOS 3.x 或更早版本的应用程序,当用户退出应用程序时始终调用此方法。 对于支持后台执行的应用程序,一般不会在用户退出应用程序时调用此方法,因为在这种情况下应用程序只是移动到后台。但是,在应用程序在后台运行(未挂起)并且系统出于某种原因需要终止它的情况下,可能会调用此方法。
如果您的应用启用了后台使用:
- (void)applicationDidEnterBackground:(UIApplication *)application
【讨论】:
applicationWillTerminate: 被调用 如果用户在应用程序仍在运行时关闭设备电源,则应用程序永远不会被后台处理前景。
请改用applicationDidEnterBackground:。在多任务系统中按下主页按钮时应用程序不会终止。
【讨论】:
来自iOS Application Programming Guide 关于核心应用程序设计和应用程序生命周期:
如果您的应用程序当前处于挂起状态,则不会调用 applicationWillTerminate: 方法。
如果您链接到 iOS 4.0,您还应该将数据保存在 applicationDidEnterBackground:。
【讨论】:
第一步:command + shift + h(双击(tab))
第 2 步:移动应用顶部(杀死)
第 3 步:applicationWillTerminate 工作
【讨论】: