【问题标题】:applicationWillTerminate works as long as I don't switch off the iPhone只要我不关闭 iPhone,applicationWillTerminate 就可以工作
【发布时间】:2009-04-01 09:38:27
【问题描述】:

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

-(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 上使用它时,变量的保存和检索仅在您按下 Home 按钮、退出应用程序并再次打开时才有效,但在您关闭/打开 iPhone 时则无效。在这种情况下,一旦您重新打开应用程序,变量就会丢失...

我错过了什么?这实际上让我发疯:(

非常感谢;) 法比奥

【问题讨论】:

  • 你是说 A) 关闭手机在你的应用程序运行时似乎会导致问题,或者 B) 关闭手机,即使在你关闭之后应用程序,导致首选项消失?

标签: iphone


【解决方案1】:

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

Apple's iPhone OS Programming Guide 有一节是关于处理中断的。

【讨论】:

    【解决方案2】:

    根据 Apple 的文档

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

    如果您想确保保存内容,您应该在您的偏好设置中调用“同步”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-18
      • 2015-04-13
      • 1970-01-01
      相关资源
      最近更新 更多