0

私はこのような.plistから辞書をロードしています:

switches = [NSMutableDictionary dictionaryWithContentsOfFile:
                    [[NSBundle mainBundle] pathForResource:@"Switches" ofType:@"plist"]];
[switches retain];

そして今、私はそれに新しいエントリ(別の辞書)を追加する必要があります。辞書を作成して追加するには、次のようにします。

    NSMutableDictionary *newObject = [[NSMutableDictionary alloc]init];
    [switches setObject:newObject forKey:@"MyNewObject"];

リリースする必要がありnewObjectますか?switchesつまり、とにかくそれでうまくいくと思いますよね?

4

2 に答える 2

2

はい、辞書に追加した後、newObjectをリリースする必要があります。ディクショナリは保持カウントに+1を追加し、オブジェクトの初期化の一部として「alloc」を使用したため、すでに保持カウントは1になっています。

NSMutableDictionary *newObject = [[NSMutableDictionary alloc]init];
    [switches setObject:newObject forKey:@"MyNewObject"];
[newObject release];

また

NSMutableDictionary *newObject = [[[NSMutableDictionary alloc]init]autorelease];
    [switches setObject:newObject forKey:@"MyNewObject"];

また

NSMutableDictionary *newObject = [NSMutableDictionary dictionary];
    [switches setObject:newObject forKey:@"MyNewObject"];

また受け入れられるだろう

于 2012-08-06T20:28:44.023 に答える
1

辞書はあなたがそれらに入れたオブジェクトを保持するので(すべてのカカオコレクションはそれを行います)、あなたはリリースする必要がありますnewObject

または、次のように、自動解放されたオブジェクトとして作成することもできます。

NSMutableDictionary *newObject = [NSMutableDictionary dictionary];

newObjectこのように、明示的にリリースする必要はありません。

于 2012-08-06T20:04:15.167 に答える