我的代码如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], @"show_outer_reference_circle_preference",
[NSNumber numberWithBool:YES], @"show_seconds_circle_preference",
nil];
NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];
[prefs registerDefaults:appDefaults];
[glView startAnimation];
return YES;
}
并且进一步下来我使用以下代码轮询NSUserDefaults:
NSUserDefaults * userDefaults = [[NSUserDefaults standardUserDefaults] retain];
NSNumber* optionsBoolValue = [userDefaults objectForKey:@"show_outer_reference_circle_preference"];
NSAssert(optionsBoolValue != nil, @"AAAAHH");
//...
[userDefaults release];
设置无法通过。正如你所看到的,我将值设置为YES,buuuuttt设置为零,应用程序就像“AAAAHH”。
我做错了什么?
提前致谢,
-Nick
答案 0 :(得分:1)
正如您所看到的,代码的第一部分就在didFinishLaunching之后。但是,代码的“读出”部分(问题中的第二个块)位于对象的init方法中,该对象是由加载nib而创建的,因此在 > didFinishLaunching,因此像“AAAAHHH”。
为了解决这个问题,我使用一个静态方法创建了一个对象来设置userDefaults,并在我读取任何设置之前调用它。