删除plist文件不会重置macOS 10.9+上的应用程序

在10.9开发一个Cocoa应用程序的时候,我注意到如果我去~/Library/Preferences并删除我的应用程序的plist文件(重置它),在下一次build-and-run时,应用程序的行为就像plist文件从来没有被删除过。

我花了很长的时间来找出为什么发生这种情况,我没有看到这个问题的答案,所以我写这个问题,自己回答,帮助别人。

在10.9,系统正在做一些更强大的“caching”偏好。 删除plist文件后,我启动了Activity Monitor并强制终止了“cfprefsd”进程。 注意:有多个进程正在运行这个名字,你只想杀死在你自己的用户下运行的进程; 不要杀死作为根运行的那个。

这样做似乎冲洗首选项caching,并在我的应用程序的下一个运行,我得到一个原始的从头开始启动。

编辑:如下所示,使用defaults delete [your bundle identifier]在命令行中defaults delete [your bundle identifier]似乎也消除了caching问题。 我已经与这个混杂的成功。

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

killall -u $USER cfprefsd

在docker:

defaults delete com.somecompany.someapp

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

http://www.tempel.org/PrefsEditor

它和Xcode的plist编辑器几乎一样,但直接影响用户的应用偏好。

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

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