2010-03-08 7 views
2

NSUserDefaults에 문제가 있습니다. 나는 애플 리케이션을 위해 가능한 한 밀접하게 책의 단계를 밟았지만 같은 문제가 발생한다. 내가 설정에서 시도하고로드 할 때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

은 아이폰 개발입니까? 어떤 사람은 그것이 아이폰 물건을 가지고 있는지 확인하시기 바랍니다! – RageZ

답변

1

의 NSNumber 객체이기 때문에, 당신이 원하는 것을 나에게 보인다 :

NSNumber *loop = [defaults objectForKey:@"loop_preference"]; 
    NSNumber *play = [defaults objectForKey:@"play_me_preference"]; 
    NSNumber *volume = [defaults objectForKey:@"volume_preference"]; 

(.의 NSNumber 후 변수 이름 앞에 별표 * 추가) 비록을 이것은 오류 메시지와 직접적으로 관련이있는 것 같지 않습니다. 코드에서 유일하게 명백한 특질입니다.

+1

Extra Tip : 위임 클래스의'+ (void) initialize' 메소드에서 설정을로드하는 것이 좋습니다. 그것은'applicationDidFinishLaunching' 델리게이트 메소드보다 먼저 호출되기 때문에 모든 설정이 그 메소드에서도 가능합니다. – Eimantas