2012-05-09 8 views
2

最近iOSプロジェクトをARCに変換しました。プロジェクトには2つのターゲットがあります。 1つはアプリケーション自体であり、もう1つはGHUnitテストのセットです。 Core Dataオブジェクトの作成と変更に関しては、約200のテストがあります。テストで使用されるコアデータストアはインメモリストアであり、テストが終了すると破棄されます(つまり、どこにも保持されません)。GHUnitはiOSプロジェクトでARCに変換した後にallocate_pages()エラーを返します

私のテストが実行されている間(エラーがスローされる前に全く同じポイントに達することはありませんが、常に同じテストの周りにあります)、アプリケーションはEXC_BAD_ACCESS(Code = 2、address = .. 。)

は、次のコンソールの出力がされるよう: Console Output

私が指示here in this answerを踏襲し、-fno-objc-arcコンパイラフラグを使用するGHUnitターゲットの私のmain.mファイルを設定し、それdoesnのき助けてくれたようだ。

私は実際にこれらのエラーの意味を理解していないので、それらを検索することは役に立たなかったようです。私の唯一の推測は、私は記憶がなくなっているということですが、なぜ、どのようにARCが私のために物体をリリースすべきかを考えていません。

私は本当にこの問題を解決するために私を与えることができる任意のヘルプに感謝したい!ご質問がある場合は、私にコメントを残して、私はできるだけ早くあなたに戻ってきます!

ありがとうございます!あなたは、メモリの枯渇の問題を抱えていると

まず

答えて

1

クリス、、、あなたは楽器の割り当てツールの下で実行されている、あなたのテストをご覧ください。 VM自動スナップショットをオンにすることを忘れないでください。次に、テストが実行されるときにヒープを複数回マークする必要があります。

第2に、これはARCに関連している可能性がありますが、それはおそらくそうではありません。一般に、ARCアプリは自動的にオブジェクトを早くリリースできるため、MRRアプリよりもフットプリントが小さくなります。さまざまなオプションを持つ新しいコンパイラへの移行は、既存の問題を明らかにするかもしれません。

第3に、メモリ内のデータベースを使用しているため、最初のテストではSQLite DBに変更するだけです。それははるかに小さい足跡を持つことができます。 (メモリ内のDBに後で戻ってくることがあるかもしれませんが、私たちはあなたのメモリが枯渇した原因を見つけようとしています。メモリ内のDBはたくさんのRAMを使うことができるので、取ることができます。

あなたは上記の第一と第三の作業を完了したら、あなたの結果を折り返し報告してくださいが。

アンドリュー

+0

ありがとう!あなたは、私が理由を調査するために楽器を使用していました。メモリ不足について正しかった、とで私はメモリ内のデータベースを保持していましたが、tearDownClassメソッドでmanagedObjectContextをnilに設定しました。 –

関連する問題