0

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

现在,这是 NSUserDefaults 的默认行为,如果应用程序由于任何问题而终止,下一次启动将不会存储信息?

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

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

2 回答 2

1

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

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

[[NSUserDefaults standardUserDefaults] synchronize];

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

于 2012-07-25T21:05:51.403 回答
1

注册默认值后添加此

[[NSUserDefaults standardUserDefaults] synchronize];

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

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

示例:将其想象为您正在编辑的 google 文档。

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

于 2012-07-25T21:03:36.340 回答