我遇到NSUserDefaults问题。我尽可能地按照书中的步骤操作我的应用程序,但仍然遇到同样的问题。
我正在
当我尝试加载设置时出现*** -[NSUserDefaults integerForKey:]: message sent to deallocated instance 0x3b375a0
错误。这是我的代码,它位于App Delegate类中。
- (void)applicationDidFinishLaunching:(UIApplication *)application {
recordingController = [[RecordingTableViewController alloc] initWithStyle:UITableViewStylePlain];
[recordingController retain];
// Add the tab bar controller's current view as a subview of the window
[window addSubview:tabBarController.view];
[self loadSettings];
}
-(void)loadSettings
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSNumber loop = [defaults objectForKey:@"loop_preference"];
NSNumber play = [defaults objectForKey:@"play_me_preference"];
NSNumber volume = [defaults objectForKey:@"volume_preference"];
}
正如您所看到的,我并没有尝试对值进行任何操作,但是我在循环首选项中的行读取时出现错误。如果我尝试读取NSString,我也会得到它。
任何建议都将不胜感激。
由于
彼得
答案 0 :(得分:1)
由于NSNumber是一个对象,我觉得你可能想要:
NSNumber *loop = [defaults objectForKey:@"loop_preference"];
NSNumber *play = [defaults objectForKey:@"play_me_preference"];
NSNumber *volume = [defaults objectForKey:@"volume_preference"];
(在NSNumber之后和变量名之前添加星号*。)虽然这似乎与您的错误消息没有直接关系,但它是您代码中唯一明显的怪癖。