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

Gre*_*reg 8 macos cocoa objective-c nsuserdefaults

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

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

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

Nic*_*ley 18

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

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

有关更多信息,请参阅10.8Core Foundation发行说明.

2016年更新:NSUserDefaults现状指南就在这里.