2

ビューコントローラが最初にインスタンス化されるとき、通常、その存続期間を通じて必要なオブジェクトを作成またはロードします。コンテンツの表示に関連するビューやオブジェクトを作成しないでください。データオブジェクトと、他の重要な動作を実装するために必要なオブジェクトに焦点を当てる必要があります。

上記はiOSリファレンスからのものです:

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html#//apple_ref/doc/uid/TP40007457-CH10

ドキュメントでは、ストーリーボードを使用したビューの読み込みシーケンスについて説明しています。

私の質問は:

1

ビューコントローラは、ビューオブジェクトを含むnibファイルに関連付けられるため、また、その「viewDidLoad」メソッドは、ロード時にビューオブジェクトを構成するために設計されているようです。では、ドキュメントの提案はどのようにすべきでしょうか:

「コンテンツの表示に関連するビューまたはオブジェクトを作成しないでください」

解釈されますか?

2

質問1は、ストーリーボードを使用するかどうかに関するものですか?

4

2 に答える 2

1

私があなたの質問を正しく理解するかどうかはわかりませんが、ここに私の説明があります:

  1. initializationとビューの作成は2つの別々のステップです。IBOutletコアデータに保存されているレシピのリストを表示するテーブルを備えたViewControllerがあるとします。私の初期化メソッドでは、CoreDataからデータをフェッチし、それを配列またはフェッチされた結果コントローラーに格納します。そのためのテーブルは必要ないので、self.viewプロパティについては何もしません(viewDidLoadビューがまだない場合はifを呼び出します)。で、セルを再描画して、コントローラーの初期化子で作成されたコントローラーからのデータを表示するようにしますviewDidLoad[tableView reloadData]

  2. 関連性はないと思いますが、ストーリーボードは、個別のペン先を単一のファイルに置き換えるビューコントローラーの単なる足場である必要があります。

于 2012-04-08T11:20:41.717 に答える
1

あなたが引用した声明は、モバイルデバイスの制限と設計効率に大きく関係しています。特にストーリーボードとは関係ありません。

「インスタンス化」とは、ドキュメントが-(id)init;呼び出しを意味します。これが発生すると、コントローラーは「重要なデータを準備しますが、ビューは作成しません」。これは、コントローラーがxibファイルを評価し、初期化時にビューの内部階層表現を構築することを意味します。この手順には、RAMとCPUのみが含まれます。

ビューコントローラは、ナビゲーションコントローラにプッシュされたとき、またはビュートランジションアニメーション(viewDidLoadキックインしたとき)でのみビューを作成します。これは、ビューが高価であるためです。GPUとビデオRAMが含まれます。ビデオRAMはRAMよりもはるかに制限されており、表示する必要がないときにビュー(VRAMのバックバッファ)を作成するだけでは効率的ではありません。

プロジェクトを見ると、初期化されているView Controllerがいくつかあることがわかりますが、すぐに表示する必要はありません。このような設計がないと、VRAMは理由もなくすぐに消耗します。

于 2012-04-08T11:27:41.647 に答える