Iphone CFPreferencesCopyAppValue在iOS 4下不工作

Iphone CFPreferencesCopyAppValue在iOS 4下不工作,iphone,iphone-sdk-3.0,ios4,cfpreferences,Iphone,Iphone Sdk 3.0,Ios4,Cfpreferences,我正在CFPreferencesCopyAppValue中存储用户名。在iOS 3.1.3下,该变量按预期工作,但在iOS 4中,该变量在应用程序打开时存储,但在应用程序关闭时(使用多任务关闭功能),该变量不会存储,即重新启动应用程序时,该变量为null 我有一种感觉,这可能是多任务处理的问题,因为该应用程序关闭的方式与iOS 3稍有不同,因此无法在关闭的应用程序上进行保存 不幸的是,我没有使用SDK的最新版本,因此它可能会在以后的版本中修复,但我需要该应用程序在3.1.3和4.0下工作,这是S

我正在CFPreferencesCopyAppValue中存储用户名。在iOS 3.1.3下,该变量按预期工作,但在iOS 4中,该变量在应用程序打开时存储,但在应用程序关闭时(使用多任务关闭功能),该变量不会存储,即重新启动应用程序时,该变量为null

我有一种感觉,这可能是多任务处理的问题,因为该应用程序关闭的方式与iOS 3稍有不同,因此无法在关闭的应用程序上进行保存

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


如能对此事有所了解,我们将不胜感激

如果您发布一些关于如何更新值的实际代码,这可能会很有用。根据文件:

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

并且文档指定您应该使用
CFPreferencesSetAppValue
保存该值

更新:我怀疑我在您的场景中遗漏了什么,也许我下面的答案就是您正在做的事情,因为您确实提到您当前的代码适用于3.1.3

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

更新2:文档明确提到:

您必须调用函数才能将更改保存到永久存储器中


如果您发布一些关于如何更新值的实际代码,这可能会很有用。根据文件:

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

并且文档指定您应该使用
CFPreferencesSetAppValue
保存该值

更新:我怀疑我在您的场景中遗漏了什么,也许我下面的答案就是您正在做的事情,因为您确实提到您当前的代码适用于3.1.3

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

更新2:文档明确提到:

您必须调用函数才能将更改保存到永久存储器中


请注意,根据本协议,所有新应用程序和现有应用程序的更新必须使用iPhone SDK 4构建。除非您正在开发内部分发应用程序,否则尝试编写适用于iOS 3.1.3的新代码似乎没有多大意义。它面向特定的受众(我不想说谁),但很可能会有3.1.3设备使用它。它将使用iPhone4.0SDK构建,但我看不出为什么如果它是为4.0构建的,并且编码正确,那么它的大部分不能在3.0上工作,是吗?我之所以使用此版本的SDK,是因为我可以在相同的环境中以3.1.3和4为目标。请注意,根据需要,所有新应用程序和现有应用程序的更新都必须使用iPhone SDK 4构建。除非您正在开发内部分发应用程序,否则尝试编写适用于iOS 3.1.3的新代码似乎没有多大意义。它面向特定的受众(我不想说谁),但很可能会有3.1.3设备使用它。它将使用iPhone4.0SDK构建,但我看不出为什么如果它是为4.0构建的,并且编码正确,那么它的大部分不能在3.0上工作,是吗?我之所以使用此版本的SDK,是因为我可以在相同的环境中以3.1.3和4为目标。我使用CFPreferencesSetAppValue在代码的早期设置该值,并且在iOS 3和4中,可以在以后正确地检索它们。该值设置为CFPreferences,并在关闭应用程序之前从中检索。在iOS3中,它工作正常,而在iOS4中,它重置为null。当应用程序关闭或暂停时,我不会做任何事情,但可能操作系统会在应用程序关闭时的闪存中存储CFPreferences之类的项目,这在iOS4中不会发生,因此它失败的原因,不知道,谢谢,这似乎起到了作用。奇怪的是,我怎么没这么说,但在iOS3下它起作用了,而在iOS4下却没有。我想这就是我在代码的早期使用CFPreferencesSetAppValue设置值的原因,在iOS 3和iOS 4中,我可以在以后正确地检索它们。该值设置为CFPreferences,并在关闭应用程序之前从中检索。在iOS3中,它工作正常,而在iOS4中,它重置为null。当应用程序关闭或暂停时,我不会做任何事情,但可能操作系统会在应用程序关闭时的闪存中存储CFPreferences之类的项目,这在iOS4中不会发生,因此它失败的原因,不知道,谢谢,这似乎起到了作用。奇怪的是,我怎么没这么说,但在iOS3下它起作用了,而在iOS4下却没有。我想这就是让我困惑的原因