NSUserDefaults的registerDefaults是如何工作的?

当我在application:didFinishLaunchingWithOptions:设置registerDefaults application:didFinishLaunchingWithOptions:我通过application:didFinishLaunchingWithOptions:设置NSUserDefaults的默认值。

 NSMutableDictionary *defaultsDictionary = [@{@"userHasLoggedInOnce":@NO, @"firstTimeOpeningApp":@YES} mutableCopy]; [[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDict]; [[NSUserDefaults standardUserDefaults] synchronize]; 

如何registerDefaults存储,它已经设置这些值只有一次,因为它每次应用程序启动时调用? 这是否也是一个标准的用户默认值? 如果是这样,是否有可能重置默认值?

注册用户默认值为密钥设置默认值。 所以当应用程序第一次启动的时候,你不会得到nil,0或者false,然后在你的代码中testing很多次,如果是这样的话。 相反,你设置“欢迎”。

编辑:注册域的内容不写入磁盘; 每次启动应用程序时都需要调用此方法。 您可以在应用程序的资源目录中放置一个plist文件,并调用registerDefaults:您从该文件中读取的内容。 ( 来源 )

正如注释所解释的,调用registerUserDefaults不会覆盖savedValues,因此每次启动应用程序时都可以安全地调用它。 您可以添加一个重置button,您可以在其中覆盖用户保存的值,并使用plist中的值(默认值)。