2

iPhone開発の初心者を助けてください。私のアプリでは、これを頻繁に行いますが、Instruments ではリークとして表示されます。これを行う正しい方法は何ですか?

NSMutableDictionary オブジェクトで使用するために、数値データを文字列として再フォーマットしようとしています。だから私は、次のようなことをすれば素晴らしいだろうと思いました:

[myDict setObject:[NSString stringWithFormat:@"%d", section] forKey:@"Category"];

それを行うために3行を書かなければならないのは嫌です...

NSString *cat = [NSString stringWithFormat:@"%d", section];
[myDict setObject:cat forKey:@"Category"];
[cat release];

必要に応じて使用しますが、そのような一時的な使用のベスト プラクティスは何ですか?

4

2 に答える 2

8

解放する必要はありません。、、、、またはでstringWithFormat始まらないため、明示的に保持していない限り、リリースする責任はありません。allocinitnewcopymutableCopy

Instruments がリークを表示すると、リークしたオブジェクトが割り当てられた場所が表示されますが、実際にリークを引き起こしているコードが表示されるとは限りません。あなたが漏れているのではないかと思うmyDictので、その中のすべてのオブジェクトも漏れています。

于 2011-04-25T19:28:44.760 に答える
3

あなたは決してそれを解放しません。すでに自動リリースされています。

+alloc名前が、+new -copy-mutableCopy、またはで始まるメソッドを介して与えられたオブジェクトのみを解放します-retain。名前がそれ以外で始まる場合、あなたはそれを所有しておらず、それを解放する責任はありません.

于 2011-04-25T19:27:56.163 に答える