0

我有一个保存数据的应用程序(游戏):游戏状态、高分、成就等。目前,应用程序委托在applicationWillTerminate:. 在玩了一段时间 iPhone 4 之后,似乎应用程序几乎永远不会终止:它们只是永远在后台运行,除非用户不遗余力地退出它们或重新启动手机。

所以我的问题是,我应该找到另一个地方来保存我的数据吗?如果是,什么时候?

4

4 回答 4

5

为了最大限度地减少委托方法调用所花费的时间,您应该在游戏期间找到一个有意义的保存位置(关卡完成、检查点等)。您还可以向您的应用程序委托添加一个新的委托方法,当您的应用程序转换到后台时将调用该方法,您可以在后台复制您之前在applicationWillTerminate:. 要实现的新委托方法是-applicationDidEnterBackground:.

您还将收到用户切换回您的应用程序的通知applicationWillEnterForeground:

于 2010-06-23T05:49:08.627 回答
2

您应该保存在 applicationDidEnterBackground 中。确保使用 - beginBackgroundTaskWithExpirationHandler: 和 endBackgroundTask 包装您的保存代码,因为没有它,您在执行暂停之前只有不到一秒(或类似的时间)。

于 2010-06-23T05:47:42.637 回答
2

您可以使用 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:

查看参考以获取更多信息

于 2010-06-23T05:51:30.090 回答
2

您可以在视图 diddisappear 委托方法中执行此操作

-(void)viewDidDisappear:(BOOL)动画

{

//保存代码

}

于 2010-06-23T05:41:29.067 回答