2013-03-21 34 views
0

我正在开发一个包含最新SDK的iOS应用程序。我需要做registerDefaults:每次应用程序启动?

我这样做:

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

    return YES; 
} 

是否需要做registerDefaults:每一个应用程序启动时间?

+0

我从未在我的生活中见过这样的代码......我也没有使用它。这是在做什么? – borrrden 2013-03-21 08:20:40

+0

@borrrden:请参阅“NSRegistrationDomain”的文档。它提供了一组临时默认设置,以确保搜索始终成功。 – 2013-03-21 08:27:48

+0

NSRegistrationDomain是否与iOS相关? – borrrden 2013-03-21 08:37:03

回答

2

是的,registerDefaults:国家明确的文档:

注册域名的内容不写入磁盘;每次你的应用程序启动时,你需要调用这个方法。

请注意,出于同样的原因,在registerDefaults:之后不需要拨打synchronize。根据苹果文档

+0

没有发现问题。抱歉。有用。 – VansFannel 2013-03-21 08:24:17

1

是的,它是必要的:

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

当您注册默认值时,您通常会提供自定义plist文件。所以当你改变它写入这个plist文件的值,并且当你得到一个值时,它将从这个plist文件中获得。

相关问题