0

自分がやっているプロジェクトでストーリーボードを使うことにしました。アプリが起動すると、正しいことを実行awakeFromNibviewDidLoadますが、アプリが別のビューへのセグエを終了するviewDidUnload と、呼び出しは行われず、deallocも行われません。AppleのInstrumentsを使用しましたが、メモリリークは発生しません。

念のために言っておきますが、私はカスタムセグエを使用NSLogしており、メソッドにsを挿入してこれをテストしています。他の誰かがこれに出くわしましたか?

更新したいだけです。dealloc実際には呼び出されますが、呼び出されませんviewDidUnload

4

2 に答える 2

1

このviewDidUnload方法は、目的のみを目的としていますdidReceiveMemoryWarning(つまり、メモリを回復するためにビューが削除されているが、ビューコントローラーは回復されていない場合)。シミュレータでの実行中に表示する場合はviewDidUnload、ViewControllerをセカンダリビューにプッシュまたはpresentしてから、シミュレータのメニューからメモリ警告を生成します。UIViewControllerクラスリファレンスから引用します:

低メモリ状態が発生し、現在のView Controllerのビューが不要な場合、システムはそれらのビューをメモリから削除することを選択する場合があります。[viewDidUnloadメソッド]は、ビューコントローラのビューが解放された後に呼び出され、最終的なクリーンアップを実行するチャンスです。ビューコントローラがビューまたはそのサブビューへの個別の参照を格納している場合は、このメソッドを使用してそれらの参照を解放する必要があります。このメソッドを使用して、ビューをサポートするために作成したが、ビューがなくなったために不要になったオブジェクトへの参照を削除することもできます。この方法を使用して、ユーザーデータや簡単に再作成できないその他の情報を解放しないでください。

このメソッドが呼び出された時点では、viewプロパティはnilです。

于 2012-08-23T15:11:10.113 に答える
1

viewDidUnloadビューが実際にアンロードされるときに呼び出されます。ビューが表示されていないときにリソースをクリーンアップしたい場合は、それを に入れますviewDidDisappear

viewDidUnload で何が起こっているかを確認したい場合は、シミュレーターでアプリを実行し、メニューバーから [ハードウェア] | [ハードウェア] を選択します。メモリ警告をシミュレートします。

メモリが圧迫されると、画面に表示されていないビューが削除され、そのときにviewDidUnloadメソッドが送信されます。

于 2012-08-23T08:44:23.650 に答える