当我建立我的应用程序默认的喜好,我做了以下内容:为什么使用registerDefaults:而不是setValue:forKey:?
1)阅读Root.plist
从内部Settings.bundle
到字典中。
2)我测试,如果偏好设置,如果没有我通过[NSUserDefaults standardUserDefaults] registerDefaults:]
问题注册我的默认词典,与registerDefaults:
注册默认不要去持久存储,所以如果用户从未更改他们的偏好我正在阅读我的默认偏好,并在每次应用启动时用NSUserDefaults
注册。
而不是使用registerDefaults:
我可以使用setValue:forKey:
并将我的默认设置转到永久存储,绕过每个启动时需要构建&注册字典。但是,Apple的documentation和sample code都指向registerDefaults:
。
所以我想弄清楚什么时候和为什么我应该使用registerDefaults:
以及何时/为什么我应该使用setValue:forKey:
来代替?
我发现这个相关的问题:[[NSUserDefaults registerDefaults:]?](http://stackoverflow.com/questions/4931167/what-is-the-use-of-nsuserdefaults-registerdefaults)虽然答案解释了这些差异,但他们仍然没有真正说出为什么你应该使用一个。 (答案似乎忽略了我关于持久性的问题。) – gabrielk 2012-02-06 20:05:18