我的沙盒应用程序在10.8中正常运行,但在10.9中,似乎用户默认的.plist根本没有保存

时间:2013-10-10 09:34:52

标签: objective-c macos nsuserdefaults sandbox osx-mavericks

Sandboxed应用程序在10.8中正常运行但在10.9中似乎是用户默认值。 plist根本没有保存。 plist的位置是:

~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist

如果我删除它,它将不会再次创建。在10.8,这是有效的。

有没有人见过这个或有人可以提出解决方案吗?

3 个答案:

答案 0 :(得分:9)

问题通过重启解决了,远远不够。 首选项保存正确,它可以正常工作,直到我再次删除应用程序容器文件夹。然后需要重新启动以解决此问题。

答案 1 :(得分:7)

我解决这个问题的方法是在更改.plist文件后终止'cfprefsd'守护程序进程:

  

ps auwx | grep cfprefsd | grep -v grep | awk'{print $ 2}'| xargs sudo kill -2

在下次访问.plist文件后,守护进程将重新启动,然后将为已更改的密钥设置新值。

不幸的是,这种解决办法是必要的,但至少它可靠地运作。

答案 2 :(得分:1)

我昨晚遇到了这个问题(我还在开发我的应用程序)。我通过删除app容器文件夹(将整个~/Library/Containers/com.domain.appname移动到Finder中的垃圾箱)并重新运行应用程序来修复它。

我首先重新启动,因为我看到有一些与我的应用相关的LSShared文件,在重启之前不会从垃圾箱中清空。

我只能想象这是小牛队(转基因种子)的间歇性错误。

编辑关于错误的评论可能不是真的;根据{{​​3}},看起来.plist文件正在“出路”。然而,在一天结束时,我的应用程序(和OP)停止工作,因此无法正常工作。