在应用程序终止之间保持NSUserDefaults信息



在iOS4中,当我保存NSUserDefaults时,信息会被保存。但是,如果应用程序变为非活动状态,并且我终止应用程序(双击主页按钮,然后终止应用程序),然后再次启动应用程序,则不会读取NSUserDefaults。

现在,这是NSUserDefaults的默认行为吗?如果应用程序因任何问题而终止,下次发布时将不会存储信息?

我用来保存信息的电话是:-

[[NSUserDefaults standardUserDefaults] registerDefaults:
     [NSDictionary dictionaryWithObjectsAndKeys:
      "Some date", @"Validity",
      nil]];

注册默认值后添加此

[[NSUserDefaults standardUserDefaults] synchronize];

在同步之前,只要应用程序处于活动状态,标准UserDefaults就会提供当前/正确的值。

一旦应用程序终止,由于您没有同步standardUserDefaults,应用程序将在下次启动时读取未同步的值。

例如:把它想象成你正在编辑的谷歌文档。

谷歌文档的AutoSave功能相当于nsuserdefaults同步。如果在自动保存对文档所做的更改之前关闭浏览器,那么下次加载时,您将看到旧内容。

您提到的持久化用户默认值的调用registerDefaults实际上并没有将任何内容持久化到磁盘。registerDefaults所做的是初始化默认值,以便在磁盘上找不到应用程序时使用。您应该在每次应用程序启动时执行此操作,通常在应用程序委托的initialize方法中执行。

应用程序运行后,通常会修改用户默认值。每当你想将这些修改后的默认值保存到磁盘上时,你应该调用:

[[NSUserDefaults standardUserDefaults] synchronize];

保存默认值后,它们将在任何后续应用程序启动时自动加载。

最新更新