只要我不关闭iPhone,applicationWillTerminate就可以正常工作

时间:2009-04-01 09:38:27

标签: iphone

保存我使用的应用程序的一些变量:

- (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则不行。在这种情况下,一旦重新打开应用程序,变量就会丢失......

我错过了什么?这实际上让我抓狂:(

非常感谢你;) 法比奥

2 个答案:

答案 0 :(得分:6)

如果您的意思是通过说“打开/关闭”来敲击手机顶部的锁定按钮,那么它将无法工作,因为锁定手机不会导致应用程序退出。 只有在退出应用程序主屏幕或某个其他应用程序时,才会调用applicationWillTerminate:方法。当用户按下“睡眠”按钮时,applicationWillResignActive:将发送给您的应用程序代表。

Apple's iPhone OS Programming Guide有一节处理中断。

答案 1 :(得分:1)

根据Apple的文档

“NSUserDefaults缓存信息,以避免每次需要默认值时都必须打开用户的默认数据库。”

如果你想确保保存的东西你应该在你的prefs上调用“synchronize”。

相关问题