2009-08-05 10 views
4

私はすでにこのような質問がありましたが、とにかくそれを削除しました。iPhone Dev - レイジーローディングコードを置く場所

私はルートビューコントローラを持つ非常に単純なアプリケーションを持っており、それは2つの他のビューコントローラビューを切り替えます。だから私のルートビューコントローラでは、それは2つの他のビューコントローラのインスタンスを遅延ロードします。ツールバーのスイッチボタンを押すたびに、現在表示されているビューコントローラ(ビュー)がアンロード(nilに設定)され、新しいビューコントローラがロードされてサブビューに追加されます。

特定の時刻にビューコントローラをロードしてアンロードするので、ゲッターのレイジーローディングコードは、実際に使用するときにロードする必要がないため、非常に混乱します。その前にロードする必要がありますフリップアニメーションは良く見えるでしょう。だから私は、ビューコントローラをロードするloadFirstVCとloadSecondVCメソッドを作成したいと思う。これは良いアイデアですか?

答えて

6

遅延ロードの主な理由は、確実に発生するロードを遅らせることではありません。決して必要とされない装填を遅らせるためである。

例:外部ファイルに保存されている写真を含め、人に関するデータがたくさんあるとします(たとえば、データを変更したときにリロードを強制するのは良いことです) 。しかし、写真が表示されるのは、ユーザーがサブビューに行く場合のみです。そのため、サブビューが表示されることを確認するまで、ファイルから写真を読み込むのはなぜですか?ブーム、怠惰な読み込みを使用します。

特定のデータをロードしたいと思うときは、正確にロードするときはそれほど重要ではありません。

いつそれが重要ですか?まあ、それは本当に最適化の問題です。あなたが横断しているかもしれないということがあります。もしあなたがいなければ、これはいつでも良い時期になります。「時期尚早最適化はすべての(プログラミング)悪の根源です。」

だから、自分自身に二つの質問を尋ねる:

  1. は、データの一部は間違いなく必要とされますか?いいえの場合は、レイジーローディング手法を実行します。はいの場合は、質問2に進みます。

  2. データを読み込むとどうなりますか? [一例を挙げれば、それは巨大であり、私はそれを置くために別のものをアンロードしないとロードしたくない]場合は、それをどこにでも置いてください。はいの場合...戻ってもう一度お問い合わせください。

...これはあなたの元の質問には答えられないと思われますが、最初は間違った質問をしているようです。私が間違っていたら謝罪します。

+0

私はいくつかのビューコントローラで遅延ロードを実装することを考えていましたが、自分自身で2つの質問をすることで、私はそれを残すように納得しました。 – malaki1974