2

我在用户默认值中设置了一个值,但我不知道它为什么会崩溃:

[[NSUserDefaults standardUserDefaults] setObject:[textField text] forKey:@"STRING"];

这很好但是

[[NSUserDefaults standardUserDefaults] setObject:[textField text] forKey:settingKey];

这不是。settingKey是我正在使用的类中声明和合成的属性。事实上,即使这一行也有效

[textField setText:[[NSUserDefaults standardUserDefaults] objectForKey:settingKey]];

当模拟器崩溃时,它会将我带到我无法理解的核心基础哈希(CFHash):

0x1c24756: call 0x1d79a00; symbol stub for: getpid

"Thread 1: EXC_BREAKPOINT (code=EXC_1386_BPT, subcode=0x0)"
4

2 回答 2

3

这里的问题是 settingKey 是null值。

if you are trying to set null value as an key arguement then it'l happend.
于 2013-07-18T14:22:00.330 回答
0

我不确定您的密钥到底是什么类型的对象,因此崩溃可能是由以下两个问题之一引起的:

  1. settingKey不是可以存储在 NSDictionary 中的对象。存储在 NSUserDefaults 中的任何键及其值都必须是 NSString、NSInteger 等。它不能是像 int 或 BOOL 这样的原始数据类型。更具体地说,键必须是 NSString。
  2. settingKeyNULL,尚未分配,或已过早释放,则 NSUserDefaults 将导致崩溃。NSUserDefaults(或 NSDictionaries)中的键不能为 NULL
于 2013-07-18T14:25:08.660 回答