我有一个保存数据的应用程序(游戏):游戏状态、高分、成就等。目前,应用程序委托在applicationWillTerminate:
. 在玩了一段时间 iPhone 4 之后,似乎应用程序几乎永远不会终止:它们只是永远在后台运行,除非用户不遗余力地退出它们或重新启动手机。
所以我的问题是,我应该找到另一个地方来保存我的数据吗?如果是,什么时候?
为了最大限度地减少委托方法调用所花费的时间,您应该在游戏期间找到一个有意义的保存位置(关卡完成、检查点等)。您还可以向您的应用程序委托添加一个新的委托方法,当您的应用程序转换到后台时将调用该方法,您可以在后台复制您之前在applicationWillTerminate:
. 要实现的新委托方法是-applicationDidEnterBackground:
.
您还将收到用户切换回您的应用程序的通知applicationWillEnterForeground:
。
您应该保存在 applicationDidEnterBackground 中。确保使用 - beginBackgroundTaskWithExpirationHandler: 和 endBackgroundTask 包装您的保存代码,因为没有它,您在执行暂停之前只有不到一秒(或类似的时间)。
您可以使用 2 种应用程序委托方法
applicationDidResignActive: //pausing the app, used when a msg comes up. if multitasking this wont help
applicationDidEnterBackground: // called in iOS 4 for when the app is in the background
你可以看到它何时加载到前台使用
applicationWillEnterForeground:
查看参考以获取更多信息
您可以在视图 diddisappear 委托方法中执行此操作
-(void)viewDidDisappear:(BOOL)动画
{
//保存代码
}