UITabViewControllerとMemory Warning その2
Modal View表示時にMemory Warningが発生するとその下にある全てのviewControllerのviewDidUnloadデリゲートが呼ばれるのだが、そこでViewControlerが管理しているViewが解放されてしまっているらしい所までは解った。しかしどうやってそれを防ぐかが解らない。うーん。
Main含めて全てのUIViewController下のviewDidUnloadが呼ばれると共にModelViewの裏となっているViewがnilクリアされてしまうことは解った。
なのでそれを避ければこの現象自体は解消できる。
- UIViewController.setView (viewプロパティのアクセサをオーバライド)
-(void)setView:(UIView*)view { //memory warning時にnilがセットされてくるが、それは回避しないと現在のタブ下のViewが真っ黒いままになってしまう。 if( view != nil ) { [super setView:view]; } }
これで真黒黒助は解消されるが、このままだとViewが解放されて欲しい時も解放されずにメモリリークの元になってしまう。
なんらかの制御(例えばアプリケーション終了時はクリアできるようにする等)が必要だろう。