Проблема с NSUserDefaults и освобожденным экземпляром - PullRequest
2 голосов
/ 08 марта 2010

У меня проблема с 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.

Любые предложения будут с благодарностью.

Спасибо

Peter

1 Ответ

1 голос
/ 11 марта 2010

Поскольку NSNumber является объектом, мне кажется, что вы хотите:

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

(Добавьте звездочки * после NSNumber и перед именами переменных.) Хотя это не имеет прямого отношения к вашему сообщению об ошибке, это единственная очевидная ошибка в вашем коде.

...