2

ユーザーのデフォルトに値を設定していますが、クラッシュする理由がわかりません:

[[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)"
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

キーがどのタイプのオブジェクトであるか正確にはわからないため、クラッシュは次の 2 つの問題のいずれかが原因である可能性があります。

  1. settingKeyNSDictionary に格納できるオブジェクトではありません。NSUserDefaults に格納されているキーとその値は、NSString、NSInteger などである必要があります。int や BOOL のようなプリミティブ データ型にすることはできません。より具体的には、キーは NSString でなければなりません。
  2. settingKeyNULLであるか、割り当てられていないか、時期尚早に割り当てが解除された場合、NSUserDefaults はクラッシュを引き起こします。NSUserDefaults (または NSDictionaries) でキーをNULL にすることはできません
于 2013-07-18T14:25:08.660 に答える