NSUserDefaults在Mac OS X上存储数据的位置是什么?

时间:2013-10-07 20:59:39

标签: objective-c macos cocoa nsuserdefaults

我正在开发一款为Mountain Lion开发的Mac OS X应用程序。该应用程序在第一次运行时执行一些设置任务。然后它在[NSUserDefaults standardUserDefaults]中设置一个标志;在后续运行中,应用程序会检查该标志是否已设置,如果已设置,则不会执行这些首次设置任务。

在Mountain Lion上,我能够删除〜/ Library / Preferences / bundleid.plist文件,以清除应用程序存储在NSUserDefaults中的所有内容。但是,在最新版本的Mac OS X上,当应用程序运行时,它甚至都没有创建该文件。我通过检查调试器中从[[NSUserDefaults standardUserDefaults] objectForKey:@"foo"]返回的值来验证它是否已成功将数据保存到NSUserDefaults。

有人能指出我关于如何删除存储在NSUserDefaults中的应用程序设置的正确方向吗?

1 个答案:

答案 0 :(得分:18)

小牛还没有被释放,所以我忽略了这个问题的一部分。如果您想要特定于Mavericks的答案,您应该在开发人员论坛上询问。

无论OS X版本如何,删除默认域的正确方法都是使用defaults delete bundleidits programmatic equivalent~/Library/Preferences是一个实现细节。其中包含的plist并不总是包含最新信息。在Mountain Lion之前,默认更改会在各个应用程序中缓冲,直到它们synchronize为止;在Mountain Lion及更高版本中,它们在cfprefsd进程中保留在内存中,并且懒洋洋地刷新到磁盘。

有关详细信息,请参阅Core Foundation release notes for 10.8

2016年更新:NSUserDefaults状态的当前指南为here