代码之家  ›  专栏  ›  技术社区  ›  Rudiger

cfPreferencesCopyAppValue不在iOS 4下工作

  •  1
  • Rudiger  · 技术社区  · 14 年前

    我将在cfPreferencescopyappValue中存储用户名。在iOS 3.1.3下,它按预期工作,但在iOS4中,它在应用程序打开时存储它,但一旦关闭(使用多任务关闭功能),变量就不会被存储,即重新启动应用程序时,变量为空。

    我觉得这可能是多任务处理的问题,因为应用程序的关闭与iOS 3有点不同,因此不会保存在关闭的应用程序上。

    不幸的是,我没有使用最新版本的SDK,因此可能会在以后的版本中修复它,但我需要该应用程序在3.1.3和4.0下工作,这是最新版本的SDK,它有3.1.3和4.0,无需进行多次安装。所以如果它是在最终版本上修复的,我想我必须安装多个版本。

    对这件事的任何解释都表示感谢。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Franci Penov    14 年前

    如果您发布了一些关于如何更新值的实际代码,这可能很有用。按照 CFPreferencesCopyAppValue 文档:

    请注意,从该函数返回的值是不可变的,即使您最近使用可变对象设置了该值。

    以及 Preferences Best Practices 文档指定应该使用 CFPreferencesSetAppValue 保存值。

    更新 :我怀疑我在你的场景中遗漏了一些东西,也许我的回答如下 您所做的,因为您提到了您当前的代码在3.1.3上工作。

    如果是这种情况,您可能需要指定保存值的事件。可能是你在应用程序关闭时更新了它,但是如果你没有在plist中明确指定你不支持挂起,你的应用程序可能只是挂起。

    更新2 : CFPreferencesSetAppValue 文件明确提到:

    你必须打电话给 CFPreferencesAppSynchronize 功能,以便将更改保存到永久存储