2013-10-05 13 views
56

私のアプリが実行されている特定の(一貫性)の点では、私は一貫によるメモリエラーのために終了"メモリエラーにより終了"をデバッグすることはできますか?

Xcodeのエラーメッセージが表示されますが。

エラーの原因となるコードを見つけることができませんが、エラーの近くにどのコードがあるかを知ることができます(ブレークポイントを使用)。

エラーが

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

UITableViewDataSourceデリゲートメソッドの私のimplemenationで特定のセルを返した後、直接原因です。私はそれが有効なUITableViewCellを返すことを確認することができますが、その方法全体を説明し掲示することはあなたの時間の無駄になると思います。しかし、私はそれが急速で大量のメモリの割り当てによって引き起こされた可能性があると考えています。

間違いなくメモリ圧力ではなくTerminated due to memory errorと表示されます。

私は本当にメッセージが何であるかを知りたいと思います。また、このメッセージをデバッグする方法はありますか?クラッシュレポートは生成されません。診断の下であなたは割り当てを守るために、いくつかのオプションを見つけることができます、

私はARCを使用していますとiOS 7

+1

に降りてくるでしょう。超高層UIWebView(20000ピクセル以上)を作成していたので、私のアプリはクラッシュしていました。私は決してクラッシュレポートを見つけることができなかったし、クラッシュ前にメモリ警告を得る方法も見つけ出していなかった。 –

+0

@HeathBorders私はUIWebviewも使用しています。それはとても面白いです。私は私の高さを確認する必要があります。ありがとう! –

+0

これは、これらのコンポーネントでよく起こるエラーです。考えられる原因は次のとおりです。何らかの理由で(計算をチェックして)たくさんのセルが生成されていると、セルサイズが間違っています(サイズを作る際に無限の数のnanを生成することで0で割るように)。または無限ループで発生します。 – Pochi

答えて

2

編集スキーム。 Refer to the documentation for details

質問:「メモリエラーのために終了しましたが、「圧力」ではありません。アプリのメモリが不足している場合は、楽器をチェックインします。アプリのメモリが不足しているように見える場合は、正確なメッセージの内容に関わらず、それに集中する必要があります。

+0

間違いなく「エラー」ではなく「圧力」と言います。クラッシュ時には、メモリレベルは一貫して約15 MBです。 –

+0

次に、malloc診断を有効にしてみます。あなたはデバイスでテストしていますか? – LearnCocos2D

+0

はいデバイス上でのイムテスト - iPad 3rd Gen –

3

私は全く同じ問題がありました。私はそれが私のプログラムのメモリリークやあまりにも多くのメモリを使用していると思った。私は楽器を使用し、プロファイルとプログラムの動作をうまく割り当てるのに使用しました。また、私は長い間デバイスごとにプログラムを実行し、それも正常に動作します。

iPad 3 Genをデバッグにも使用していますが、デバイスやバグが遅いため、Xcodeのように思えてXcodeの問題から実行されている可能性があります。メモリリークや割り当ての問題ではありません。あなたが楽器を確認し、デバイス自体にアプリケーションを実行し、

+0

Hmmm。この投稿に参加したすべての人がiPad 3rd genでテストしています。一致? –

+0

別のデバイスでエラーを再現できましたか? –

+0

私はiPad 3世代しか使用していないので、まだ分かりません。今日私はiPad miniの網膜を注文しましたので、来週にはこれを公然と回答できます;) –

40

を作業する場合

私はこのエラーを得ていたし、間違っていたのか理解できませんでした。

いくつかの検索の後、私はゾンビを無効にすることを忘れていたことがわかりました。次の操作を実行無効にするには

Select edit scheme

Deselect "Enable Zombie Objects

+0

ゾンビとテーブルビューの関係は何ですか? –

+3

ゾンビを有効にすると、オブジェクトの割り当てが解除されないため、すべてが影響を受けます。これは、多くのものが割り当てられ、割り当てが解除されているテーブルビューの場合、メモリを非常に速く満たします。ゾンビを有効にする定義:割り当てられていないオブジェクトを、それを使用しようとするすべての試みをトラップする「ゾンビ」オブジェクトに置き換えます。ゾンビオブジェクトにメッセージを送信すると、ランタイムによってエラーが記録され、クラッシュします。バックトレースを見れば、ゾンビ検出器をトリガした一連の呼び出しを見ることができます。 – zirinisp

+0

まだ、私は問題に直面しています。私を案内してください。 –

4

私は同じ問題直面していた( "によるメモリエラーのために終了") 私はすべての答えの上にしようとしました。しかし、私のために何も働かない。それから私は自分のコードをデバッグし、forループが毎回nil値の配列にメモリを割り当てて無限大の時間実行していることを発見しました。その使用300 + MBので、このエラーを与える

ありがとう。

+0

私の時間が節約されました。ありがとうございました。 –

2

私はOCRにTesseractを使用していました。ターゲットテキストがスキャンされたときに、GIFが再生されていました。 GIFが始まったとき、70〜80MBから450MBのメモリスパイクがありました。問題は、GIFが多すぎるメモリを取っていて、アプリケーションがクラッシュし、Xcodeがそのメッセージを表示するということでした。そこで、ViewControllerのスーパービューから関連するimageViewを削除しました。

imageView.removeFromSuperview 

はこの後、アプリはまだ450メガバイトにスパイクが、その後すぐに、私はXcodeで同じエラーを見てリリースし、40メガバイト

関連する問題