2009-08-05 8 views
0

私は、タブバーコントローラーとnavBarコントローラーを持つアプリを持っています。それは〜8ビュー(Web、テーブル、標準、メール、アドレスなどの様々なもの)を持っています。いくつかはIBを使って作成されたもので、XCodeを使ってテーブルビューを作成しました。私はメモリリークテストを実行しましたが、メモリリークはありません。いずれかのビューでいつでもクラッシュする可能性があります。ビュー間を前後に移動していくつかの関数を使用すると、アプリケーションが終了します。マルチビューアプリがクラッシュする

私は1)メモリ不足または2)正しくビューを解放していないと仮定して、アプリケーションを終了させます。このアプリはシンプルなので、私はどのようにメモリが不足しているのか分からず、オブジェクトを正しく解放するためのコードを見直しました。

ので、ここでは、質問の私のリストです:

1)何をどのように使用するために、他のデバッグツールの一部(または、私が使用して探しすべきかのツール/ファイルを教えてください)?問題の原因を絞り込んでいます。

2)これらのビューを解放するためのベストプラクティスは何ですか?どうやって?

3)通常のアプリはどれくらいのメモリを使用していますか?私は周りにいなければならない数字はありますか?シミュレータでそのことをどのように確認するのですか?割り当てツール?

アップルのドキュメントや他の私に役立つスタックオーバーフローの質問を教えてください。

更新:1つのビューが使用されていて、カスタムセルを含むテーブルビューを持っているだけです。セルはplistファイルから読み込まれます...このビューは数日前にうまくいきました。いくつかの細胞はplistファイルからのデータを持っていません...それは適切なデータを保存しないとplistファイルの問題になる可能性があります。私はそれに取り組むつもりです。

UPDATE#2:この特定のtableViewがうまく動作していて、それがうまくいくと思ったときに、私はファイルの旧バージョンに戻りました。このバージョンのアプリでこのシミュレータを3.0に変更しますこのテーブルビューのバムクラッシュが表示されます。これまでの助けてくれてありがとう、私は以下に述べる何かを試し、私が見つけたものを知らせる。 2.2.1から3.0へのカスタムセルのtableViewを使用してtableViewをクラッシュさせる理由についていくつかのヒントがある場合は、それらを取り上げます。私がどこにでも行くことができなければ、すぐにコードを掲載します。私は間違っていました。

解決方法:トラブルシューティングのヒントをいただきありがとうございます。修正は非常に簡単でしたが、2.2.1でクラッシュしていたのは奇妙です...問題のために長い間前にクラッシュしていたはずです。私のカスタムセルで何度も...

答えて

0

第1世代と第2世代の携帯電話では、実際のメモリ使用量は約20メガ以上になりたくはありません。それを乗り越えれば、飛び降りる危険があります。

私が見た大きな犯人のひとつは、自動解放されたメモリです。あなたが潜在的な問題になる可能性のある自動解放されたオブジェクトをたくさん使っている場合、自動解放プールはあなたが本当に好きなほど長くメモリを保持できるからです。可能であればより明示的な保持/解放を行い、ローカルの自動解放プールを手動で作成し、多数の自動解放されたオブジェクトを使用してより集中的な操作を行った後に解放することで、これを改善できます。

私が今までに見つけた実際のメモリ使用量を把握する最も効果的な方法は、テスト電話機でデバッグビルドを実行し、Activity Monitorで実行することです。そうすれば、あなたのアプリがどれくらいのメモリを持ち歩いているのかを明確に知ることができます。それだけでなく、あなたがクラッシュしたときにどれくらい使用されているか。

[実行]メニュー - > [パフォーマンスツールで起動] - > [アクティビティモニタ]のXcodeでアクティビティモニタを使用して実行できます。

もう一つの非常に便利なツールは、あなたのコードベースに対して実行することができますし、いくつかの非常に有用なメモリ管理情報を与えることができ打ち鳴らす静的アナライザです。前述したようにhere。私がしようとするだろう

0

ことの一つは、あなたのdidReceiveMemoryWarning方法(複数可)に、いくつかのデバッグメッセージを入れています。そうすれば、がメモリ不足のである場合、少なくとも警告が表示されます。

関連する問題