2

テスト用の3Gデバイスを使用してアプリケーションを開発しました。これを友人にテストしてもらうと、クラッシュすることに気づきました。クラッシュログを確認しましたが、いくつかのメモリ警告の後の「EXC_BAD_ACCESS」ステートメントを除いて、あまり役に立ちません。

私のデバイスでは、imagePickerロットを使用でき、写真を撮るたびにメモリ警告が表示されますが、これで問題は発生しません。

友人のデバイス(これも3G)で、カメラからいくつかの画像を選択した後、アプリがクラッシュします。

だから、私の質問は..メモリ警告のために何かが割り当て解除されていると思います-しかし、私の友人のデバイスでのみ、そして割り当て解除後、それは再び使用されようとしています。呼び出されているオブジェクトを確認するにはどうすればよいですか?これはリモート(ベータ)デバイスであるため、NSZombiesを使用できません。

助けてください!

また、私のデバイスが問題なく画像を次々と選択でき、彼ができない理由を誰かが知っているなら...それは最も役に立ちます

ありがとう!

編集:新しい発見..私もこのエラーメッセージを受け取ります:KERN_PROTECTION_FAILUREこれはデータアクセスと関係があると理解しています。UIImagePickerから取得した画像を保存した直後にクラッシュが発生するようです。何か案は?

4

2 に答える 2

3

何かを過剰にリリースしている可能性があります。Snow Leopard を実行している場合は、Static Analyzer (Cmd-Shift-A) を実行してメモリ エラーを探します。

メモリ エラーの後にクラッシュするという事実は、UIViewController がそのビューを解放したことを示唆しています。NSNotifications を監視する UIViewControllers はありますか、それ以外の場合は、画面外にあるときに IBOutlets を変更する可能性がありますか? これは、この種のクラッシュの一般的な原因です。IBOutlets を正しくメモリ管理していることを確認してください。UIViewController は、画面外にあるときに IBOutlets (または UI コンポーネント) をいじってはいけません。この間違いを犯していなくても、上記のリンクに記載されているように実装していない場合でも、メモリ警告の後にクラッシュする可能性があります。

MemoryWarning は非常に優れたアイデアであり、状況は改善されましたが、Apple はまだ UIViewController での動作に関するすべての問題を解決していません。開発者は依然として細心の注意を払う必要があります。

于 2010-01-07T23:11:39.950 に答える
0

あなたはあなたの友人にあなたのコンピュータに来てもらいそしてNSZombieEnabledでそれを実行させるべきです。これが、これらの問題をデバッグするための最良の方法です。

于 2010-01-07T22:50:21.520 に答える