保存我使用的应用程序的一些变量:
- (void)applicationWillTerminate:(UIApplication *)application {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setFloat: self.viewController.sLabel.contentOffset.y forKey:@"floatKey"];
[prefs setObject:self.viewController.newText forKey:@"stringVal"];
[prefs synchronize];
}
并通过按钮检索它们,我执行以下操作:
- (IBAction)riprendi:(id)发件人{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
float myFloat = [prefs floatForKey:@"floatKey"];
//这里有一些行动
}
一切都在模拟器上运行。但是,在真正的iPhone上使用它,变量的保存和检索只有按下主页按钮,退出应用程序并再次打开才有效,但如果关闭/打开iPhone则不行。在这种情况下,一旦重新打开应用程序,变量就会丢失......
我错过了什么?这实际上让我抓狂:(
非常感谢你;) 法比奥
答案 0 :(得分:6)
如果您的意思是通过说“打开/关闭”来敲击手机顶部的锁定按钮,那么它将无法工作,因为锁定手机不会导致应用程序退出。
只有在退出应用程序主屏幕或某个其他应用程序时,才会调用applicationWillTerminate:
方法。当用户按下“睡眠”按钮时,applicationWillResignActive:
将发送给您的应用程序代表。
答案 1 :(得分:1)
根据Apple的文档
“NSUserDefaults缓存信息,以避免每次需要默认值时都必须打开用户的默认数据库。”
如果你想确保保存的东西你应该在你的prefs上调用“synchronize”。