1

今日、iPhone アプリのテストとデバッグを行っていたところ、奇妙な動作に遭遇しました。

MainViewには2つのモーダルビューがあり、これらの1つを使用して表示すると、もう一方を表示するときにメソッドが呼び出されていないことpresentModalViewControllerに気付きました。サブビューを閉じるときのメソッド (of ) も同様でした。viewDidUnloadMainViewviewDidLoadMainView

サブビューを開いたり閉じたりする 2 つの方法を調べたところ、唯一の違いはmodalTransitionStyle. アクティブ化したものviewDidUnload/viewDidLoad私が使用していたものUIModalTransitionStyleFlipHorizontalと、他のものUIModalTransitionStyleCrossDissolve。次に、2 つのスタイルを交換し、他のトランジション スタイルも使用して実験を開始しましたが、これが実際に異なる動作の原因であることがわかりました。実際、「親」View ControllerUIModalTransitionStyleFlipHorizontalviewDidUnload/viewDidLoadメソッドを使用すると、他のトランジション スタイルでは呼び出されませんでしたが、常に呼び出されていました。

私の質問は、これはこのように動作するはずであり、そうでない場合はどの動作が正しいかということです。モーダル ビューを表示したり閉じたりするときに unload メソッドと load メソッドが呼び出されるはずですか。

また、他の誰かがこの行動を確認または否定できますか?

ありがとう

PS。呼び出された 2 つのビュー コントローラーのviewDidLoadメソッドが毎回呼び出されます。明確にするために:)

4

1 に答える 1

0

モーダル ビューを表示したり閉じたりするときに unload メソッドと load メソッドが呼び出されるはずですか。

動作は、現在のメモリ状況によって異なります。メモリが不足している場合、システムはすべてのビュー コントローラにメモリ警告を送信します。ビューが現在画面に表示されていないビュー コントローラーは、そのビューをアンロードすることでメモリ警告に反応します (ビューが再び画面に表示されると、ビューのリロードが発生します)。

そのため、デバイスのメモリ状況と、表示しているモーダル ビュー コントローラのメモリ要件に応じて、アンロード/ロードの動作は異なるはずです。modalTransitionStyleIMOに依存するべきではありません。

于 2011-01-15T13:08:12.453 に答える