我在用户默认值中设置了一个值,我不知道它崩溃的原因:
[[NSUserDefaults standardUserDefaults] setObject:[textField text] forKey:@"STRING"];
这很好,但
[[NSUserDefaults standardUserDefaults] setObject:[textField text] forKey:settingKey];
事实并非如此。 settingKey
是在我正在使用的类中声明和合成的属性。事实上,即使这行也可以使用
[textField setText:[[NSUserDefaults standardUserDefaults] objectForKey:settingKey]];
当模拟器崩溃时,它会把我带到Core Foundation Hash(CFHash),我无法理解:
0x1c24756: call 0x1d79a00; symbol stub for: getpid
"Thread 1: EXC_BREAKPOINT (code=EXC_1386_BPT, subcode=0x0)"
答案 0 :(得分:2)
这里的问题是settingKey是null
值。
if you are trying to set null value as an key arguement then it'l happend.
答案 1 :(得分:0)
我不确定你的密钥到底是什么类型的对象,因此崩溃可能是由以下两个问题之一引起的:
settingKey
不是可以存储在NSDictionary中的对象。存储在NSUserDefaults中的任何键及其值必须是NSString,NSInteger等。它不能是原始数据类型,如int或BOOL。更具体地说,密钥必须是NSString。settingKey
NULL ,尚未分配,或者已过早解除分配,然后NSUserDefaults将导致崩溃。 NSUserDefaults(或NSDictionaries)中的密钥不能为空