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

时间:2013-10-10 18:54:17

标签: objective-c macos cocoa plist

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

我花了很长时间来追踪这种情况发生的原因,我没有在SO上看到关于它的问题/答案,所以我正在写这个问题并自己回答以帮助其他人。

4 个答案:

答案 0 :(得分:57)

在10.9,系统正在做一些更健壮的"缓存"偏好。删除plist文件后,我启动了Activity Monitor并强行杀死了" cfprefsd"处理。注意:有多个进程运行此名称,您只想杀死在您自己的用户下运行的进程;不要杀死以root身份运行的那个。

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

编辑:如下所述,在命令行中使用defaults delete [your bundle identifier]似乎也可以消除缓存问题。我已经取得了不同程度的成功。

答案 1 :(得分:14)

我发现杀死用户进程cfprefsd将重新刷新缓存,因此您的更改将被保留

killall -u $USER cfprefsd

答案 2 :(得分:12)

在终端:

defaults delete com.somecompany.someapp

答案 3 :(得分:9)

BTW,我刚刚发布了一个GUI应用程序,它比使用defaults命令更方便:

http://www.tempel.org/PrefsEditor

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

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

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