EXEC_BAD_ACCESS при использовании NSUserDefaults

#objective-c

#objective-c

Вопрос:

При записи в NSUserDefaults возникает ошибка.

Поток 1: EXEC_BAD_ACCESS(код = 1, адрес = 0x2166b8f5)

У меня есть Google, но я не могу найти никакой другой подсказки для решения.

моя версия iOS — 7.0.4, xcode — 5.1.1, мой исходный код выглядит так, как показано ниже.

 CCLOG(@"%@",message);
NSNumber *highScore = [[NSUserDefaults standardUserDefaults] objectForKey:@"highscore"];
if (self.score > [highScore intValue]) {
    // new highscore!
    highScore = [NSNumber numberWithInt:self.score];
    //something bad in this code.

    [[NSUserDefaults standardUserDefaults] setObject:highScore forKey:@"highscore"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
  

введите описание изображения здесь

введите описание изображения здесь

Комментарии:

1. Зачем сначала создавать NSNumber? Выполняется ли это в основном потоке? Что такое self.score (определение и зарегистрированное значение)?

2. Какое значение имеет рекорд, если вы его регистрируете?

3. @JamalZafar согласно скриншоту, значение равно 4988.

4. Трассировка стека или «Включить объекты зомби» помогли бы: D