我正在开发为Mountain Lion开发的Mac OS X应用程序。该应用程序在首次运行时会执行一些设置任务。然后在其中设置一个标志[NSUserDefaults standardUserDefaults]
;在随后的运行中,该应用程序检查是否设置了该标志,并且如果设置了该标志,则不执行这些首次设置任务。
在Mountain Lion上,我能够删除〜/ Library / Preferences / bundleid.plist文件,以清除应用程序存储在NSUserDefaults中的所有内容。但是,在较新版本的Mac OS X中,当应用程序运行时,它甚至没有创建该文件。我通过检查[[NSUserDefaults standardUserDefaults] objectForKey:@"foo"]
调试器中返回的值来验证它已成功将数据保存到NSUserDefaults中。
任何人都可以为我指出有关如何删除存储在NSUserDefaults中的应用程序设置的正确方向吗?
小牛队尚未发布,所以我忽略了这一部分问题。您应该在开发者论坛上询问是否需要特定于Mavericks的答案。
不论OS X版本如何,删除默认域的正确方法都是使用defaults delete bundleid
或与之等效。~/Library/Preferences
是实施细节。其中包含的读者并不总是包含最新信息。在Mountain Lion之前,默认更改会在各个应用程序中进行缓冲,直到它们生效为止synchronize
。在Mountain Lion和更高版本中,它们在cfprefsd
进程中保留在内存中,并懒惰地刷新到磁盘。
有关更多信息,请参见Core Foundation发行说明中的10.8。
2016更新:此处提供了有关NSUserDefaults状态的最新指南。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句