2012-04-09 3 views
1

ループ内のCCLabelTTFの配列に表示する数値の配列をフォーマットしようとしています。 NSNumberFormatterはautoreleaseオブジェクトを返します。私はここでどのようにメモリ管理を取り扱うべきかについてはあまりよく分かりません。アドバイスをいただければ幸いです。目的NSNumberFormatterでループ内での自動解放

ここ

は私が把握しようとしている問題である:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
NSString *tempString; 

for(int i = 0; i<10; i++){ 
    tempString = [formatter stringFromNumber:[NSNumber numberWithInteger:NumberArray[i]]]; 
    CCLabelTTFArray[i] = [[CCLabelTTF alloc] initWithString: tempString fontName:@"Arial" fontSize:10.0f]; 
    [tempString release]; 
} 

[formatter release]; 
+2

あなたは '[tempString release];'を呼び出す必要はありません。実行ループは、あなたのメソッドが完了した後*あなたのためにオブジェクトを "自動解放"します。 – dasblinkenlight

+0

私はtempStringポインタを変更して、そのオブジェクトへのポインタを失うので問題があると思った。私はメモリリークを引き起こしている可能性があると思ったのは、関数の終わりから、tempStringのautorelease tempStringのすべての以前の割り当てではないということです。私は[tempStringのリリース]、私の間違いを置くつもりはなかった。 – Ganamede

+0

あなたの最後のコメントに対する回答を編集しました。 – dasblinkenlight

答えて

1

あなたは[tempString release];を呼び出す必要はありません:実行ループます「自動リリース」オブジェクトあなたのためにあなたのメソッドが完了後しばらく。短い実行ループ(あなたのように、10回の反復しかない)では、心配することはありません。何千もの反復を持つループの場合は、Autorelease Poolを追加することを検討してください。

私はそれがtempStringを自動解放されます、それは、関数の終わりからメモリリークを引き起こしているかもしれないと思ったが、tempString

の以前の配分stringFromNumber:方法の各呼び出しのすべては、そのリターンを追加していません値を自動解放プールに追加するので、何回ループを実行しても、返されるすべての文字列はオートリリースされます。

+0

ありがとう、私は正直な応答を感謝します。この時点までに私が読んだことは、オートレリースオブジェクトがどのように追跡されているかについてはっきりしていません。 – Ganamede

関連する問題