NSUserDefaults: обнаружение ноль - PullRequest
1 голос
/ 09 января 2011

У меня есть некоторый код в моих классах для чтения из NSUserDefaults

NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
score = [defs integerForKey:@"score"];

это вызывает сбой.

Я предполагаю, что это потому, что значение оценки равно нулю или не существует.

Как я могу проверить, равен ли он nil?

EDIT.

Следующий код вызывает сбой при сохранении в NSUserDefaults.

NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
    [defs setInteger:0 forKey:@"score"];
    [defs setInteger:3 forKey:@"lives"];
    [defs release];

Не уверенв чем проблема

При некоторых сбоях в консоли даже нет отчета о сбое.

Спасибо

1 Ответ

9 голосов
/ 09 января 2011

Согласно документации, ", если указанный ключ не существует, этот метод возвращает 0" . Поэтому integerForKey всегда будет возвращать NSInteger, даже если вы его не установили.

Edit: Теперь вы редактировали свой вопрос, я вижу проблему. Вы выпускаете NSUserDefaults. Нет причин делать это. Удалите строку [release] из своего кода.

[NSUserDefaults standardUserDefaults] возвращает одноэлементный класс. Вы не владеете им, поэтому вы не должны выпускать его. Просмотрите Apple Правила управления памятью , если вы не уверены, когда следует сохранить / освободить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...