The existence of a Settings.bundle does not have any effect on NSUserDefaults
. It's not until a value is changed from its default that the value is reflected in NSUserDefaults
.
The proper solution is to use NSUserDefaults registerDefaults:
. In many cases, you load the dictionary of defaults with the contents of the Root.plist
. You do not need to call synchronize
for this. The defaults get registered every time your app runs. The values are not actually stored. When you ask for a value from NSUserDefaults
, if no explicit value exists, then the registered defaults are looked at for a value.
You should register the defaults as soon as possible at app startup.