我在我的应用程序中使用了这部分代码,它像预期的那样工作。但现在,它在使用setInteger时崩溃了:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
int selEvent = [defaults integerForKey:@"selected_event"];
/*
* Do Something with selEvent
* New ID is in NSNumber event_id
*/
[defaults setInteger:[event_id intValue] forKey:@"selected_event"]; //Crashes on this line
[defaults synchronize];在Xcode 4.5.1和iPad 6.0模拟器中工作。
我要买一台EXC_BAD_ACCESS。
我的问题的原因是什么?
发布于 2014-06-16 17:59:52
我也有同样的问题。我追踪到了其他的东西:
我将整数存储在NSUserDefaults中,代码如下:
[[NSUserDefaults standardUserDefaults] setInteger:_currentBannerIndex forKey:@"currentBannerIndex"];在一段时间后,它在相同的点崩溃,写入相同的值。原因是在这段时间之后,我使用如下代码注册了NSUserdefaults中的更改:
[[NSNotificationCenter defaultCenter] addObserver:self selector: @selector(userDefaultsChanged) name:NSUserDefaultsDidChangeNotification object:nil];这是在初始化时在导入器中完成的。在取消分配导入器之后,对用户默认设置的新写入将触发已消失对象的观察者。轰隆隆。撞车。
当然,解决方案是删除我的导入器的dealloc中的观察者。
发布于 2017-06-11 14:06:20
对我来说,问题出在[event_id intValue]
event_id是NSString &它正在发布,因此发生了这个错误。
发布于 2013-01-09 17:47:51
找到我的问题了:
NSDictionary *defaultUserDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:0], @"selected_event",
nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultUserDefaults];这在以前的setInteger中是有效的:
已使用setObject更改所有setIntegers。
https://stackoverflow.com/questions/14232023
复制相似问题