0

我正在使用最新的 SDK 开发一个 iOS 应用程序。

我这样做:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    [standardUserDefaults registerDefaults: [PreferenceDefaultValues dictionary]];
    [standardUserDefaults synchronize];

    return YES;
}

是否需要做 registerDefaults: 每次应用程序启动?

4

2 回答 2

2

是的,registerDefaults:各州的文档明确:

注册域的内容不写入磁盘;您需要在每次应用程序启动时调用此方法。

请注意,出于同样的原因,无需调用synchronizeafter registerDefaults:

于 2013-03-21T08:18:56.727 回答
1

是的,根据苹果文档,有必要:

如果没有注册域,则使用指定的字典创建一个,并将 NSRegistrationDomain 添加到搜索列表的末尾。注册域的内容不写入磁盘;您需要在每次应用程序启动时调用此方法。您可以在应用程序的 Resources 目录中放置一个 plist 文件,然后使用从该文件中读取的内容调用 registerDefaults:。

当您注册默认值时,您通常会提供一个自定义 plist 文件。因此,当您更改一个值时,它会写入此 plist 文件,而当您获得一个值时,它会从此 plist 文件中获取。

于 2013-03-21T08:21:47.383 回答