44

在 10.9 上开发 Cocoa 应用程序时,我注意到如果我去~/Library/Preferences并删除我的应用程序的 plist 文件(以重置它),在下一次构建和运行时,应用程序的行为就像 plist 文件从未被完全删除。

我花了很长时间才弄清楚为什么会发生这种情况,并且我没有在 SO 上看到有关它的问题/答案,所以我正在写这个问题并自己回答以帮助他人。

4

4 回答 4

59

在 10.9 上,系统正在对首选项进行一些更强大的“缓存”。删除 plist 文件后,我启动了 Activity Monitor 并强制终止了“cfprefsd”进程。注意:有多个同名的进程正在运行,你只想杀死在你自己的用户下运行的一个;不要杀死以root身份运行的那个。

这样做似乎会刷新首选项缓存,并且在下一次运行我的应用程序时,我会从头开始启动。

编辑:如下所述,defaults delete [your bundle identifier]在命令行使用似乎也可以消除缓存问题。我在这方面取得了喜忧参半的成功。

于 2013-10-10T18:54:17.383 回答
14

我发现杀死用户进程 cfprefsd 会重新刷新缓存,所以你的更改将被保留

killall -u $USER cfprefsd

于 2013-12-15T17:24:24.517 回答
14

在终端:

defaults delete com.somecompany.someapp

于 2014-05-26T20:52:19.363 回答
10

顺便说一句,我刚刚发布了一个 GUI 应用程序,它可能比使用默认命令更方便:

http://www.tempel.org/PrefsEditor

它的工作原理与 Xcode 的 plist 编辑器几乎相同,但直接影响用户的应用偏好。

要删除所有首选项,您可以在我的首选项编辑器中打开您的首选项,全选,然后使用 Backspace 或 Delete 键删除它们,它们会立即全部消失。

但是,对于这个特定任务,使用defaults delete可能仍然更快,特别是如果您将命令放入以“.command”结尾的文本文件中,并使其可执行(使用chmod +x)。然后您可以从 Finder 中双击它来执行它。

于 2013-12-14T20:50:24.827 回答