好的,我承认NSUserDefaults
,是一个特定于Mac的东西(我在过去几年里我是一名Mac程序员),这是我没有深入研究过的事情之一......所以这里是我遇到的一些问题/问题:
我了解NSUserDefaults
基本上是NSMutableDictionary
,写成.plist
。
我的问题:
鉴于我正在运行OS X 10.7(Lion)并启用了Sandbox,其中是我应用的.plist文件? (我在~/Library/Preferences/com.example.myapp.plist
和~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist
都进行了搜索,但这些似乎都没有效用
我了解这个.plist
文件是在应用首次启动时创建的,对吗?
registerDefaults:
将在应用程序启动时使用(例如在awakeFromNib
中)并提供一个默认值的词典,该词典立即存储在.plist
文件中,并且仅更改如果在某一点设置了不同的值,请更正吗?
当我们设置特定的键值对时,该对是否会自动立即保存到.plist
文件中?如果是这样,为什么/何时应该使用synchronize
? (每次使用它时某些值设置为过度杀伤,还是应该为特殊情况保留?)
旁注:我希望没有人抱怨我使用osx
标签。但是,我真的厌倦了看到Cocoa Touch / iOS相关的答案(我的(主要))与OSX相关的问题。所以,你在这里......: - )
编辑:有关该主题的一些非常有用的见解,请查看接受的答案以及下面的评论。
答案 0 :(得分:3)
答案1。主目录隐藏在Lion中,因此您无法输入路径(无法查看无法从Finder中输入文件夹内的文件夹)。您可以使用Path Finder移动隐藏目录。
回答2。并非总是如此。单个应用程序中可以有多个plist。在首次发布时很少创建,在某些特定操作中很少。实际上,它取决于何时创建plist文件以及如何使用它。
回答3. registerDefaults:
寄存器默认值是指用户未为该属性设置其他值。当以后打开应用程序时,它不会覆盖用户存储的内容。您可以在任何地方使用它,但如上所述,它将被使用一次。
答案4。对于Mac OSX应用程序,没有性能和矫枉过正的问题,但是对于iOS它有。使用[[NSUserDefaults standardUserDefaults] synchronize];