UIViewController ビュー関連イベントまとめ
MyViewController と OtherViewController の2つの間で画面遷移を行った時に発生しうるビュー関連のイベントを図にまとめてみた。OtherViewController は -[UINavigationController pushViewController:animated:] で表示されたり、あるいは UIImagePickerController などを仮定している。
メモリ不足が発生するとビューの再作成が発生する。viewDidLoad はビューの作成毎に呼ばれる。メモリ不足は必ず発生する事象なので、通常はビューの再作成が発生することを前提として実装する必要がある。実機での経験では UIImagePickerController を使ってカメラ撮影などをする時によくビューの再作成が発生するようだ(元の画面へ戻った時に viewDidLoad が呼ばれる)。
メモリ不足時の動作確認
別の画面を表示している時に iPhoneシミュレータの「メモリ警告をシミュレート」を使うと上の図の状況を作り出せる。
[参考] Cocoaの日々: 「メモリ警告をシミュレート」で didReceiveMemoryWarning を擬似的に発生
これを使うとメモリ不足がシミュレートされ、元の画面で didReceiveMemoryWarning、viewDidUnload と呼び出される。その後、元の画面へ戻ると viewDidLoad、viewWillAppear と呼び出される。
参考情報
- iPhoneアプリ開発時のメモリ管理で気をつけること - A Day In The Life
- メモリ管理に関する説明。図もあってわかりやすい。参考になった。
Responses
Leave a Response