0

現在、次のエラーが表示されます。

2000-01-03 06:51:27.-641 mytestapp[470:5c03
] *** __NSAutoreleaseNoPool(): Object 0x15a5a0 
of class __NSArrayM >autoreleased with no pool in place - just leaking

他のスタックオーバーフロー リンクの調査から、この問題は、人々がスレッド セレクターの前に自動解放プールを作成せず、後でそれを排出しない場合に発生するようです。

しかし、私はこれに対応しようとしましたが、まだ困惑しています。コードはこちらのpastebinにあります。誰かが助けることができれば、それは大歓迎です。

ありがとう

4

2 に答える 2

1

「スレッドセレクターの前に自動解放プールを作成し、後でドレインします」何? これはどこで聞いたことがありますか?

あなたはそれを間違って理解していたに違いありません。元のスレッドに自動解放プールを配置しません-それは役に立ちません。スレッドで実行されるすべてのコードの周りに、それを新しいスレッドに配置することになっています。あなたの場合、それはブロックの内側を意味します-ブロックの本体の最初に作成し、ブロックの本体の最後に排出します。

于 2012-07-05T00:12:16.840 に答える
0

main.m に autoreleasepool を配置する必要があります。そうしないと、autorelease メッセージを受信しようとするオブジェクトは、プールが配置されていない状態で「リークするだけ」になります。残念ながら、その可変配列はおそらくフレームワーク オブジェクトであるため、プールはそれを修正するために何もしません。

于 2012-07-04T17:04:29.147 に答える