我正在使用NSUserDefaults
来保存应用中的数据,当用户离开应用然后返回时,所有值都会恢复。
事情是它确实在应用程序以后台模式运行时保存值。但是当我从多任务关闭应用程序并重新打开它时,应用程序将以新的方式返回,并且没有保存任何值。我添加了方法beginInBackground和applicationWillterminate 但没有任何帮助是他们在新4.0上做到这一点的新方法吗?
PS。我只在设备上测试。我无法使用模拟器,因为我正在使用Map kit。
答案 0 :(得分:2)
您是否正在调用synchronize方法?
答案 1 :(得分:2)
在applicationDidEnterBackground
中,只需使用以下代码:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults synchronize];
答案 2 :(得分:0)
您遇到的问题是,由于NSApplicationWillTerminateNotification
正在发送,因此您希望在4.0中未发送NSApplicationDidEnterBackgroundNotification
。我曾经也有过一样的问题。注册您的存储功能的两个通知,它将再次工作。您不需要条件代码,因为即使您注册了3.0中不存在的通知,也不会在那里调用它,因此不会发生崩溃。
如果您没有使用通知,则还可以覆盖applicationDidEnterBackground
:如上面评论中所述。