8

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

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

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

4

1 回答 1

18

小牛队还没有发布,所以我忽略了这部分问题。如果您想要 Mavericks 特定的答案,您应该在开发者论坛上询问。

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

有关详细信息,请参阅10.8 的 Core Foundation 发行说明

2016 年更新:关于 NSUserDefaults 状态的当前指南在这里

于 2013-10-07T21:11:51.527 回答