0

iPhoneアプリ開発は非常に新しい。
Objective-C++とCPPを使用してiPhoneエミュレーター用のサンプルアプリケーションを1つ開発しています。

次のエラーが発生しますが、なぜこれらのエラーが発生するのかわかりません。

2002-1-4 11:11:11.649 myApp[912:592f] *** _NSAutoreleaseNoPool(): Object 0x1b0d2d0 of class NSCFString autoreleased with no pool in place - just leaking
Stack: (0x305a2e6f 0x30504682 0x7c93 0x7b92 0x30d8 0x6ee2 0x1ae95e 0x6013 0x3496 0x43ca 0x39923b 0x3ca0a0 0x3ca121 0x3a1e 0x926d8155 0x926d8012)
2002-1-4 11:11:11.650 myApp[912:592f] *** _NSAutoreleaseNoPool(): Object 0x4f02470 of class __NSArrayReverseEnumerator autoreleased with no pool in place - just leaking
Stack: (0x305a2e6f 0x30504682 0x7c93 0x7b92 0x30d8 0x6ee2 0x1ae95e 0x6013 0x3496 0x43ca 0x39923b 0x3ca0a0 0x3ca121 0x3a1e 0x926d8155 0x926d8012)

私のアプリのメモリリークがこれらのエラーを引き起こしていますか?私はこれらの種類のエラーの数を取得します。テーブルビューを更新する関数が1つあり、そのときにその関数が呼び出されると、これらのエラーが発生します。その関数では、1つのstd :: vectorに要素を追加してから、[mTableViewListreloadData]を呼び出します。テーブルビューを更新します。

OSXバージョン:10.5.8およびXcodeバージョン:3.1.3

4

1 に答える 1

1

エラーは、プールがまだ配置されていないことを意味します。ココアを呼び出そうとするときはいつでも、すべてのスレッドでそれを行う必要があります

GCDを使用してディスパッチブロックを使用すると、OSがスレッドとプールを作成しますが、自分でスレッドを作成する場合は常にNSAutoreleasePoolを設定する必要があります。

ARCで@autoreleasepoolを使用し、その前に[[NSAutoreleasePoolalloc]init]を使用します。

于 2012-12-24T11:51:17.377 に答える