頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


知らなくてはまった!loadViewが呼ばれるタイミング

不具合対策にえらくはまったのでメモ。

さんざんはまった過程は後にして、私が知らなかったのは
「メモリ不足が起きるとOSがviewを解放する。再度そのviewを表示するのにloadViewが呼ばれる。」
ということ。

私が書いていたコードなんですが、問題部分は以下のような簡単な画面構成でした。

tableViewControllerでテーブルを表示(画面1)
そのテーブルのセルをタップするとナビゲーションコントローラーにより遷移して別なview(画面2)を表示する
というもの。
標準アプリの「設定」など、よくある構成ですよね。

この遷移後の画面2でごにょごにょとやってるとさんざんメモリを食ったようで、
Received memory warning. Level=1
なんてデバッガコンソールに警告が表示されます。
そして、最初の画面1に戻った時に落ちるのです。

どうやら、画面2でメモリ不足になった場合、画面1のviewはなくなっちゃってるみたいです。
他にも消すとこあるんじゃないの?
どーせ戻ったら真っ先に表示する画面を消すなよ!
なんて思ったのですが、そんなこと言っても仕方ないわけで、、、
iOSは画面1のviewを解放しといて、必要なとき(画面2から1へ戻る時)に再描画するんですね。
その時に呼ばれるのが、loadViewということ。

でらうま倶楽部 : iPhone デバッグで見逃しがちなメモリ警告。実機でわざとその状況にするには?

↑ここに説明がありました。

私が最初書いたコードではそのことを考慮していなかったので、画面1を再描画しようとした時に、テーブルを描くのに必要な値を正常に得られず落ちていたのでした、、、

そーだったのかー!!!

<< png画像を扱う  TopPage  ステータスバーの見た目を変えてみる >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/451-6fb5b389




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad