NSUserDefaults дает ошибку - PullRequest
       13

NSUserDefaults дает ошибку

1 голос
/ 20 октября 2011

Я использую NSUserDefaults в моем приложении. Это работало нормально, пока у меня не было ios 4.3 и xcode 4.0. Но теперь я обновился до ios 5 и xcode 4.2 ...

Это дает ошибку!

NSString *storedLanguage = [[NSUserDefaults standardUserDefaults] objectForKey:@"language"];


*** -[NSUserDefaults objectForKey:]: message sent to deallocated instance 0x26e800

Я не знаю, как решить эту проблему .. Я перепробовал все свои усилия!

Любая помощь будет оценена!

Спасибо

Ответы [ 4 ]

0 голосов
/ 21 октября 2011

Теперь работает нормально .. На самом деле в ios5 есть одна вещь. Если вы выпустите свои nsdefaults в одном классе, вы не сможете использовать их где-либо в приложении.

Я выпускал NSDefaults в моем файле appdelegate. так что он не работал в других классах .. Но он работал в ios4 .. Я не знаю, почему он работал здесь?

Спасибо всем за уделенное время !!

0 голосов
/ 20 октября 2011

Используйте другой ключ для ваших настроек, который не конфликтует с зарезервированными (существующими, но недоступными) именами настроек.(например, "MyUsersLanguageSettingsKey")

0 голосов
/ 20 октября 2011

Ну, от вашего вопроса это выглядит как досрочное освобождение какого-то объекта.Не могу сказать, где проблема.Но попробуйте этот

NSUserDefaults *defaults = [[NSUserDefaults standardUserDefaults] retain];
NSString * storedLanguage = [NSString stringWithFormat:@"%@",[defaults objectForKey:@"language"]];
[defaults release];

============================== ИЛИ ================================ Это

NSString *sessionId=[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults]valueForKey:@"language"]];

Они могут помочь вам ...

Приветствия

0 голосов
/ 20 октября 2011

Пожалуйста, сделайте то же самое, что сказал Naved, но с небольшими изменениями.

NSUserDefaults *defaults = [[NSUserDefaults standardUserDefaults] retain];
NSString * storedLanguage = [defaults objectForKey:@"language"];
[defaults release];
...