NSUserDefaults发布的对象?

gab*_*m10 3 iphone objective-c ipad

所以我在UserDefaults中保存了用户名.出于某种原因,我遇到了一些奇怪的行为.

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

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

userID = [prefs stringForKey:@"username"];
Run Code Online (Sandbox Code Playgroud)

这在前几次工作正常,但在我做了一些随机的东西并回去尝试重新加载视图后,它崩溃了.它说:

-[CFString retain]: message sent to deallocated instance 0x4b18ff0
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为它在NSLog线路上停止.有没有人见过这个或知道为什么会发生这种情况?

Nav*_*mon 6

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

self.userID = [prefs stringForKey:@"username"];

这样你的字符串将自动保留.从stringForKey返回的字符串是自动释放的.