ios – 我应该何时调用[NSUserDefaults standardUserDefaults] registerDefaults:]以确保.xib文件可以立即访问首选项?

ios – 我应该何时调用[NSUserDefaults standardUserDefaults] registerDefaults:]以确保.xib文件可以立即访问首选项?,第1张

概述我需要注册默认首选项值,然后在启动时立即由界面使用以设置复选框状态等. 我在app delegate中注册了默认值: - (void)applicationDidFinishLaunching:(NSNotification *)aNotification{ NSLog(@"Did finish launching"); NSDictionary *defaultPrefs = 我需要注册默认首选项值,然后在启动时立即由界面使用以设置复选框状态等.

我在app delegate中注册了默认值:

- (voID)applicationDIDFinishLaunching:(NSNotification *)aNotification{     NSLog(@"DID finish launching");    NSDictionary *defaultPrefs = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:@"isEnabled"];    [[NSUserDefaults standardUserDefaults] registerDefaults:defaultPrefs];}

然后,在通过MainMenu.xib文件创建的对象中,我想使用默认值:

- (voID)awakeFromNib{    NSLog(@"Awake from nib");    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];    [self.checkBox setState:([defaults boolForKey:@"isEnabled"] ? NSOnState : NSOffState)];}

但这些被错误地命令!

> Awake from nib> DID finish launching// Preference == `nil` or `0`,not the default value I set.

因此,当我想使用它们时,不会设置默认的首选项.

我应该在哪里注册默认值:这样默认的prefs可以用来设置.xib文件接口对象?

我使用错误的委托方法吗? applicationDIDFinishLaunching / awakeFromNib?有哪些替代方案?

解决方法 我通常在它们将被使用的控制器对象的 +initialize类方法中注册默认值. initialize是在对象的生命周期中调用的最早的方法之一,因此它确保尽可能早地注册它们.

+ (voID)initialize {     NSDictionary *defaultPrefs = [NSDictionary dictionaryWithObject:                   [NSNumber numberWithBool:YES] forKey:@"isEnabled"];     [[NSUserDefaults standardUserDefaults] registerDefaults:defaultPrefs];}
总结

以上是内存溢出为你收集整理的ios – 我应该何时调用[NSUserDefaults standardUserDefaults] registerDefaults:]以确保.xib文件可以立即访问首选项?全部内容,希望文章能够帮你解决ios – 我应该何时调用[NSUserDefaults standardUserDefaults] registerDefaults:]以确保.xib文件可以立即访问首选项?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1001225.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存