2010-11-29 7 views
0

次の行はこのオブジェクトをリークしますか[[NSMutableDictionary alloc] init]?私は、オブジェクトをALLOCなかったので、私は、オブジェクトが参照に割り当てられることはありませんので、それがないと仮定...しかし、同時に、私はそれを疑問視参照されていないalloc'dオブジェクトをコレクションに追加するとリークが発生しますか?

[myCollection setObject:[[NSMutableDictionary alloc] init] forKey:@"myDictionary"];

...

う代替案としての作業に続いていますか?

[myCollection setObject:[NSMutableDictionary dictionary] forKey:@"myDictionary"];

答えて

2

最初は第二ではないので、漏れます。

オブジェクト参照を変数に割り当てることは、オブジェクトの所有権にまったく影響しません。 allocが呼び出されました。これは、その呼び出しの結果をキャプチャするかどうかにかかわらず、所有者であることを意味します。あなたがしなければ、あなたは流出した。

+dictionaryが所有していない(自動リリースされた)オブジェクトを返すので、2番目のオプション([NSMutableDictionary dictionary])はリークしません。

したがって、簡単に言えば、あなたの直感は正しいです。おめでとう!ここでメモリ管理の質問をする多くの人々は、通常それを間違ってしまいます。 :)

+0

ありがとう!ちょっとした確認が必要でした:) –

関連する問題