0

我正在使用以下代码在 NSUserDefaults 中保存一个数字:

NSUserDefaults *prefs = [[NSUserDefaults standardUserDefaults]retain];
NSNumber *num = [[NSNumber alloc]initWithInt:indexPath.row];
[prefs setValue:num forKey:@"randomkeyhere"];

只有在某些时候我得到一个

EXC_BAD_ACCESS(代码=2)。

我做错什么了吗?这是未定义的行为还是类似的行为?我想知道为什么我只是有时而不是总是得到它。

4

2 回答 2

1

NSUserDefaults standardUserDefaults是由 iOS 管理的单例对象。它不是您发起的新对象。摆脱retain.

此外,尝试在方法中设置断点以查看程序崩溃的确切位置。从下面的控制台发布错误:

于 2012-07-29T06:34:31.513 回答
0

在单例中,保留是这样的

- (id)retain
{
    return self;
}

所以,retainCount 不会加 1。

你可以看看这个:

目标 c 中的单例

于 2012-07-29T06:47:00.347 回答