2010年5月5日水曜日

lazy loading(遅延読み込み)

マルチビューのルートコントローラのコーディング時は、リソースを極力使用しないように、切り替え時に個別のビューのリリースと生成を行うのが一般的で、これをlazy loadingと呼ぶようです。

この実装のためには、
-(void)viewDidLaoadをオーバーライドし、
オブジェクトをnib指定(initWithNibname)で生成(alloc)し、
selfの当該オブジェクトに代入
self.viewで初期画面を表示

-(void)switchviews:(id)senderで
view1が表示対象であることを、self.view1.view.superview == nilで判定します(view1がまだ組み込まれていないため、親のビューを持たない)。YESなら、もしインスタンスが生成されていなければ生成し、View2をremoveFromSuperviewし、self.viewにinsertSubviewします(at Index:0 最下層)。
view2が表示対象ならば(else)、逆をします。

-(void)didReceiveMemoryWarningで、該当オブジェクトviewのsuperviewがnilでなければ該当viewをnilし、画面から消し、メモリも解放します。いままで-(void)viewDidUnloadでまとめてnilしていましたが、マルチビューの場合こちらで解放するようです(難しい・・・)。

0 件のコメント:

コメントを投稿