Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 从NSUserDefaults释放的对象?_Iphone_Objective C_Ipad - Fatal编程技术网

Iphone 从NSUserDefaults释放的对象?

Iphone 从NSUserDefaults释放的对象?,iphone,objective-c,ipad,Iphone,Objective C,Ipad,所以我在UserDefaults中保存了一个用户名。由于某种原因,我正在经历一些奇怪的行为 我有一个数据控制器,可以根据用户名从服务器获取一些数据 NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; NSLog(@"NSUserDefaults dump: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]); userID = [p

所以我在UserDefaults中保存了一个用户名。由于某种原因,我正在经历一些奇怪的行为

我有一个数据控制器,可以根据用户名从服务器获取一些数据

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSLog(@"NSUserDefaults dump: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);

userID = [prefs stringForKey:@"username"];
这在开始的几次中效果很好,但是在我做了一些随机的事情并返回尝试重新加载视图之后,它崩溃了。它说:

-[CFString retain]: message sent to deallocated instance 0x4b18ff0

这很奇怪,因为它正在NSLog线上停止。以前有没有人见过这种情况,或者知道为什么会发生这种情况???

您是如何定义用户ID的?如果是具有retain属性的属性,则应调用

self.userID=[prefs stringForKey:@“username”]


这样,您的字符串将自动保留。从stringForKey返回的字符串是自动释放的。

stringForKey返回一个未保留的自动释放对象,该对象可能在该方法完成后立即释放

您需要手动或使用带有retain设置的属性声明来保留该字符串


然后你需要在某个时候释放它(至少在dealloc中)

是的,这似乎就是问题所在。它不再崩溃了。唉,看来是那个小小的疏忽让我头疼。谢谢你的帮助(纳瓦)我会尽快的,哈哈。这让你等了5分钟。太快了!;)是的,这就是我必须做的。没有意识到它没有被保留。由于没有显式地说self.userID,它没有被保存。谢谢你的回复。