検索
カテゴリツリー
トップ
  未整理
  iPhoneアプリ開発
      未整理
      画像処理
リンク

CD&DVD Press
プレスやってます!


TECHLOG
- (void)loadView()は必ずオーバーライドするべし
loadView()はオーバーライドしておかないとメモリ不足の時viewのライフサイクルが正常に動作しない。

例)ナビゲーションコントローラにA,B,Cの三つのUIViewControllerをpushした状態でReceived memory warningが発生した場合







A


1.didReceiveMemoryWarningが呼ばれる

2.viewが破棄される
(※loadViewをオーバライドしているか、nibファイルがある場合のみ)

3.viewDidUnloadが呼ばれる


B


1.didReceiveMemoryWarningが呼ばれる

2.viewが破棄される
(※loadViewをオーバライドしているか、nibファイルがある場合のみ)

3.viewDidUnloadが呼ばれる


C


1.didReceiveMemoryWarningが呼ばれる




top以外のViewControllerにおいてviewを破棄してメモリを確保しようと試みます。
しかし、このときloadView()をオーバライドするか、nibファイルが定義されていないとviewの破棄が行われません。viewが破棄されないのでviewDidUnload()も呼び出されません。
viewの破棄が行われないとメモリ不足が解消されずアプリケーションが落ちやすくなります。
ちなみにAをpopしてBが表示される再にviewDidLoadが呼び出されてviewが再構築されます

オーバーライドのソースは以下、特に処理はなし
- (void)loadView {
    [super loadView];
}
posted by admin at 2011年05月26日