存储NSUserDefaults时访问权限不佳

时间:2012-07-29 05:18:48

标签: ios nsuserdefaults exc-bad-access nsnumber

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

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

只有在某些时候我才能获得

  

EXC_BAD_ACESS(代码= 2)。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

在单身人士中,保留就像这样

- (id)retain
{
    return self;
}

因此,retainCount不会添加1。

你可以看看这个:

singleton in objective c