0

UIViewの割り当てが解除されない理由を追跡するのに実際の問題があります。

いくつかのUIViewを備えたUIViewControllerがあり、それらはすべて保持するIBOutletプロパティです。

UIViewControllerのdeallocメソッドでUIViewをリリースするのは確実です。ただし、UIViewのdeallocが呼び出されることはありません。他に何がUIViewを保持しているのかわかりません。

私のUIViewControllerの他のすべてのUIViewはうまく機能しますが、これだけでは問題ありません。

誰かがこれの原因となる可能性があるものを追跡するための良いテクニックを持っていますか?

よろしく、リッチ

4

2 に答える 2

2

まず、機器アプリケーションに入り、「リーク」プロファイルを選択します。アプリケーションを選択して実行し、リークを検出します。

リークが検出されたら、リークしたオブジェクト(UIView)のメモリアドレスの横にある詳細インジケーターをクリックします。ここでは、UIViewが割り当てられ、保持され、解放され、どの関数呼び出しがそれを実行したかがわかります。

「Session311-AdvancedMemory Analysis With Instruments」というタイトルの優れたWWDCビデオがあります。それを見たい場合は、詳細に説明します。

于 2010-10-05T16:27:27.093 に答える
1

Appleのメモリ管理プログラミングガイドからNibオブジェクトのメモリ管理を必ずお読みください。IBOutletsを適切に宣言する方法と、ViewControllerでそれらをいつどのように解放するかについて説明します。

短いバージョン:IBOutletプロパティをnilに設定する必要がありますViewDidUnload

それでも問題が解決しない場合は、Leaks Instrumentsツールを実行して、ビューがリークしている場所を見つけることができるかどうかを確認してください。

于 2010-10-05T10:04:22.937 に答える