2


1

Objective Cの保持/リリースデバッグ

私はiPhone開発にかなり慣れていないので、メモリ管理に問題が発生しています。

この構造でマルチビューアプリケーションを作成しました。

Main Menu - Preferences - Subview with UIPicker Item.

ナビゲーションは、Navigation Controllerを使用して行われます(プッシュ/ポップスタックビュー)。

すべてうまくいきます。 しかし、UIPickerで環境設定からサブビューに約20回切り替えると、プログラムがクラッシュします。

時々私はこのようなメッセージを受け取ります:

objc[5817]: FREED(id): message release sent to freed object=0x3d53390

問題は、どこに問題があるのか​​わからないということです。

どのオブジェクトがクラッシュしたかを確認するための拡張情報を取得する可能性はありますか?

2 Answer


1


あなたのエラーがどこにあるかを誰かがキャッチできるかどうかを確認するためにいくつかのコードを投稿したいかもしれませんが、あなたの質問に答えてください:

Zombiesを有効にできます

アプリケーションでゾンビを有効にします。これにより、オブジェクトの割り当てが解除されると、メモリを解放する代わりに、以前のオブジェクトのタイプとともに格納されます。 その後、このメモリに再度触れるとアプリがクラッシュし、最初に触れたはずのない場所と、どの種類のオブジェクトであったかがわかります。

ゾンビを無効にすると、メモリを大量に消費するため、必ず確認してください。


0


私の場合、初期化時にオブジェクトを保持し、不要になったときにリリースします。

より詳細でプロフェッショナルなソリューションが必要な場合は、http://developer.apple.com/iPhone/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html [Cocoaのメモリ管理プログラミングガイド]をご覧ください。