6

好的,我承认NSUserDefaults,作为一个特定于 Mac 的东西(过去几年我是一名 Mac 程序员),是我没有深入研究的事情之一......所以这里有一些我的问题/问题遇到过:

我知道这NSUserDefaults基本上是一个NSMutableDictionary书面形式.plist

我的问题:

  1. 鉴于我正在运行 OS X 10.7 (Lion) 并启用了沙盒,的应用程序的 .plist 文件在哪里?(我都搜索过~/Library/Preferences/com.example.myapp.plist~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist但这些似乎都不有效

  2. 我知道这个.plist文件是在应用程序第一次启动时创建的,对吗?

  3. registerDefaults:将在应用程序启动时使用(例如 in awakeFromNib)并提供立即存储在.plist文件中的默认值字典,并且只有在某个时候设置了不同的值时才更改,对吗?

  4. 当我们设置一个特定的键值对时,该对是否会自动并立即保存到.plist文件中?如果是这样,我们为什么/什么时候应该使用synchronize?(每次设置某个值时都使用它是过度杀伤,还是应该为特殊情况保留?)


旁注:我希望没有人抱怨我对osx标签的使用。但是,我真的厌倦了看到 Cocoa Touch / iOS 相关的答案来回答我(主要是)与 OSX 相关的问题。所以,你在这里...... :-)


编辑:有关该主题的一些真正有用的见解,请查看已接受的答案及其下方的评论。

4

1 回答 1

3

回答 1.主目录隐藏在 Lion 中,因此您无法输入路径(没有看到文件夹,您无法从 Finder 进入文件夹内)。您可以使用路径查找器在隐藏目录中移动。

答案 2.并非总是如此。单个应用程序中可以有多个 plist。很少有人在首次发布时创建,很少有人在某些特定操作中创建。实际上,这取决于创建 plist 文件的时间以及如何使用它。

答案 3. registerDefaults:注册默认值是当用户没有为该属性设置其他值时。稍后打开应用程序时,它不会覆盖用户存储的任何内容。您可以在任何地方使用它,但如前所述,它将使用一次。

答案 4.对于 Mac OSX 应用程序,没有性能和过度杀伤问题,但对于 iOS,它有。总是更好用[[NSUserDefaults standardUserDefaults] synchronize];

于 2013-02-25T08:29:23.403 回答