0

(インターフェイスビルダーなしで、iPhone向けの開発を学んでいることを知っているように)

ルートビューコントローラーと他の2つのビューコントローラーを持つ最初のマルチビューアプリをコーディングしています.ルートビューコントローラーは遅延読み込みを使用するため、viewDidLoad時に最初のビューコントローラーを作成し、そのビューをサブビューに追加しますが、追加しません必要になるまで、もう一方を作成します。ただし、2 番目がロードされた後は、アプリケーションが終了するまで両方ともそこにとどまります (メモリ警告を受信しない限り)。

だから私は疑問に思っています: ユーザーが2つの他のビューを切り替えたとき、削除されているもう1つのビューをアンロードする必要があります(nilに設定することで、プロパティを保持します)? ユーザーがボタンをクリックするたびに、現在のビューコントローラーがアンロードされ(スーパービューから削除された後)、次のビューコントローラーがロードされてサブビューとして追加されますか?

これは正しいことですか、それとも正しいことですが、アプリケーションに多くのビューがあり、これを行うことを正当化するほど複雑ではない場合、またはそれを行うのはまったく悪いことであり、didReceiveMemoryWarning を取得させる必要がありますそれの世話をします(didReceiveMemoryWarningで、現在表示されていないviewcontrollerをnilに設定しました)?

4

1 に答える 1

1

答えは本当に異なります。通常、表示されていないビューを解放して nil に設定する必要がありますが、ユーザーが頻繁にビューを切り替える場合は、非表示のビューを保持 ( cached ) したい場合があります。

アプリがユーザーの電話を didReceiveMemoryWarning にプッシュすることは本当に望ましくありません。その警告が表示されると、iPhone がキャッシュされた Safari ページ、キャッシュされた UIImageView オブジェクトなどをダンプしている間、アプリケーションが一時的にフリーズする原因となる他のことが電話で発生しています。アプリケーションがスムーズに感じられない場合があります。

一部のユーザーは第 1 世代の iPhone、iPod Touch、および 3G を使用している可能性があるため、3GS の余分なメモリを持たないことを覚えておくことも重要です。

そうは言っても、私はメモリを保守的に扱う側に誤りがあるため、ビューを解放して無効にし、ユーザーが見たいときにビューを再インスタンス化します。didReceiveMemoryWarning によるシステムのクリーンアップに対するビューの割り当ての影響は、通常、アプリケーションのユーザーにははるかに少なくなります。

于 2009-08-02T04:13:16.150 に答える