-4

初期化して再初期化する必要があるクラスレベルのNSMutableDictionaryオブジェクトがあります。私のプロジェクトはARCなので、リリースを使用できるかどうかわかりません。

それを行う正しい方法は何ですか?

私の現在のコードはクラッシュします:

myDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys: value1,@"key1", 
value2,@"key2", nil];

このクラッシュは、クラスがロードされた後、初めてではなく、2回目に実行したときに発生することに注意してください。ですから、問題は間違いなく私がそれを再割り当てしているということです。

いずれにせよ(クラッシュするかどうかにかかわらず)、ARCプロジェクトでこれを処理するためのリークのない方法が必要です。

4

3 に答える 3

2

私はあなたがそのようにする必要があると思います

 -(void)ViewDidLoad
 {
      [super viewDidLoad];
      myDict =  [[NSMutableDictionary alloc] initWithObjectsAndKeys: value1,@"key1", value2,    @"key2", nil];
 }

再利用する場合は、再度alloc/initを行わないでください。代わりに次のように行うことができます。

if([[myDict allKeys]count])
{
     [myDict removeAllObjects];
}

辞書内に値を再設定します

 [myDict setValue:@"Abc" forKey:@"xyz"];
于 2012-12-01T07:38:34.390 に答える
1

「再初期化」の意味はわかりませんが、辞書内のすべてのキーと値をいつでも削除して、再度挿入することができます。

于 2012-12-01T07:03:54.133 に答える
0

もう一度alloc+initするだけで、以前の値がすべて解放され、新しいオブジェクトが同じオブジェクト/辞書に再割り当てされます。

于 2012-12-01T07:04:24.990 に答える