0

次のコードを使用して、NSUserDefaultsに数値を保存しています。

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

いくつかの時点でのみ私は

EXC_BAD_ACESS(コード= 2)。

私は何か間違ったことをしていますか?これは未定義の動作ですか、それともそのようなものですか?なぜ私は時々それを得るだけで、いつもではないのか疑問に思います。

4

2 に答える 2

1

NSUserDefaults standardUserDefaultsiOSによって管理されるシングルトンオブジェクトです。開始するのは新しいオブジェクトではありません。を取り除きretainます。

また、メソッドにブレークポイントを設定して、プログラムがクラッシュしている場所を正確に確認してください。以下のコンソールからエラーを投稿してください。

于 2012-07-29T06:34:31.513 に答える
0

シングルトンでは、保持は次のようになります

- (id)retain
{
    return self;
}

したがって、retainCountは1を追加しません。

あなたはこれを見ることができます:

ObjectiveCのシングルトン

于 2012-07-29T06:47:00.347 に答える