2011-12-26 5 views
2

私は最近自分のアプリケーションプロジェクトのARCに切り替えました。私はiOS 5 SDKを使用しています。 1台のiPod 4Gデバイスを実行しても警告は表示されません。しかし、iPod用2グラム上で自分のアプリケーションを実行しようとしている私は多くの警告を得る:iOS5 ARCアプリ:__NSAutoreleaseNoPool():クラスNSCFNumberの自動リースで、プールなしで自動リークしました。ちょうどリークしました。

*** __NSAutoreleaseNoPool(): Object 0x258070 of class DataModel autoreleased with no pool in place - just leaking 
*** __NSAutoreleaseNoPool(): Object 0x2530a0 of class __NSArrayM autoreleased with no pool in place - just leaking 
*** __NSAutoreleaseNoPool(): Object 0x25a2e0 of class NSCFNumber autoreleased with no pool in place - just leaking 

私はARCを使用して、ARM6/ARM7のコードを実行している間に違いがありますね。

これを修正するにはどうすればよいですか? ありがとう

答えて

5

別スレッドで作業する場合は、@autoreleasepoolのコンテキストを追加するのが賢明でしょう。

More information available here

さらに適切な例がありますto be found in this related questionです。

+0

私はアプリケーションをARCに切り替えた後、すべての自動解放プールを削除しました。 main.mファイルにautoreleaseプールが1つしかありません。 ARCコードの場合は、自動解放プールを使用する必要はありません。私は正しいのですか? – kesrut

+0

NSAutoreleasePoolのすべての構造を@autoreleasepoolに変換する必要がありますか?それは私のコードからすべてのNSAutoreleasePoolの構造を削除したので悪いです... – kesrut

+0

Nope。あなたは '@ autoreleasepool'コンテキストで物事を維持する必要があります(あるいは' NSAutoreleasePool'もうまくいくはずです...もっと新しいフォームはARCに付属していますが、それらは同等でなければなりません)。 [この関連する質問はむしろ言葉である](http://stackoverflow.com/questions/8364853/objective-c-autoreleasepool-arc-automatic-reference-counting)、しかし、それはいくつかのより技術的な詳細を提供する必要があります。 –

関連する問題