2011-10-20 51 views
1

我在我的应用程序中使用NSUserDefaults。它工作正常,直到我有ios 4.3和xcode 4.0。但现在我已更新到ios 5和xcode 4.2 ...NSUserDefaults给出错误

它给错误!

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


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

我不知道该如何解决它..我尽了全力!

任何帮助将不胜感激!

感谢

+0

尝试分离启动和方法调用语句。像NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];那么NSString * storedLanguage = [defaults objectForKey:@“language”]; – Naved

+0

我已经做到了但是然后NSString * storedLanguage = [defaults objectForKey:@“language”];给出相同的错误 –

+0

你可以发布你的函数的整个代码?你有没有对NSUserDefaults对象做任何事情? – futureelite7

回答

0

从你的问题来看,它看起来像一些对象的早期版本。 不能说哪里是问题。 但试用一下这个

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

=============================== OR === ============================= 这一个

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

他们可能会帮助你...

干杯

+0

NSUserDefaults * defaults = [[NSUserDefaults standardUserDefaults] retain];现在给出错误... *** - [NSUserDefaults保留]:发送到已释放实例的消息 –

+0

您是否尝试了我编写的第二部分,与NSString说明符一起使用,然后检查并让我知道 – Sabby

0

请不要通过Naved但稍加修改说过同样的话。

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

NSUserDefaults * defaults = [[NSUserDefaults standardUserDefaults] retain];现在给出错误... *** - [NSUserDefaults retain]:发送到释放实例的消息 –

0

为您的设置使用不会与保留(现有但无法访问)的设置名称相冲突的不同密钥。 (例如“MyUsersLanguageSettingsKey”)

+0

NSUserDefaults * defaults = [[NSUserDefaults standardUserDefaults] retain];给出错误...它不是关键的错误..它给nsuserdefaults对象上的错误.. –

+0

究竟哪个错误?调试输出? (你也可以在“objc_exception_throw”(xcode:抛出异常断点)和“abort”(xcode:符号断点)上设置工作空间断点。 –

+0

我在我的appdelegate文件中使用了nsuserdefaults。 IT在这里工作得很好..但是在appDelegate文件后加载的其他类存在问题.. –

0

现在工作正常..其实在ios5中有一件事。如果您在一个类中释放nsdefaults,则无法在应用程序中的任何位置使用。

我正在释放我的appdelegate文件中的NSDefaults。所以它不在其他类工作..但它是在ios4工作..我不知道它为什么在这里工作?

感谢所有给予时间!