0

これが以前に尋ねられた場合は申し訳ありませんが、良い答えが見つかりませんでした。

Instruments を実行すると、メインではなく、コードの次の行でリークが発生します。

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

私は周りを見回して、それがバグである可能性があることをどこかで読みました。誰かが私を助けて、これについていくつかの光を共有してもらえますか?

メインにも同じ名前の「プール」があることに気付きました。

4

2 に答える 2

0

私もこの問題を抱えていました。コーディング方法を学ぶ初日の最初の問題です。

私がしたことは、次で始まる行全体を完全に削除することだけでした:

NSAutoreleasepool *pool = [[NSAutoreleasepool alloc] init];

それを次のように置き換えます。

@autoreleasepool {

次に、プログラムの下部で削除しました:

[プール解放];

次に、波括弧で閉じます。

なぜ機能するのかわかりません。最初の日を覚えていますが、サンプルブックからプログラムを正常に実行できます。

于 2011-11-24T16:00:34.323 に答える
0

名前は関係ありません。poolコードベース全体で名前が付けられた数百の変数が存在する場合があります。重要なのは範囲です。

通常、次のように表示されます。

- someMethod
{
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
     ... do stuff ...
     id something = [anObject retain];
     [pool drain];
     return [something autorelease];
 }

つまり、あなたのプールは排水されていますか?

( drainiOS に存在します。ドキュメントを参照してください。ただし、どのような場合でも、 を使用する@autoreleasepool{ ... }ことをお勧めします。ARC と MRR で動作します。)

于 2011-11-20T22:58:50.550 に答える