0

はい、私は Xcode の初心者です。今、私は Big Nerd Ranch IOS プログラミングの本を読んでいますが、Model-View-Controller ビットについて少し説明が必要です。

Model クラスは「CellData」、NSObject View クラスは「CellView」、UIView Controller クラスは「CellAppDelegate」、UIResponder と呼ばれます。

DrawRect メソッドは、CellData クラスからのデータに基づく色で、多くの描画を行います。これまでのところ、「 CellView」クラスから「CellData」メソッドを呼び出すべきではないことがわかりました。通常は、TestFields で UIButtons を使用する場合は、完全に理にかなっています。

この場合、ビューを更新するには、「CellData」から「CellView」に値を最大 6000 回渡す必要があります。CellAppDelegate を使用する間で呼び出しを続けることはまだ理にかなっていますか (コンピューターにとってはより多くの作業のように思えます)、それとも CellData から値を取得することは本当に「許可」されていますか?

4

2 に答える 2

2

あなたは本当にあなた自身の質問に答えました。いいえ、レンダリングごとに 6000 回の呼び出しは適切ではありません。特に、頻繁に再描画されるテーブル ビュー セルではそうです。

個人的には、コントローラーの仕事は、モデル レイヤー (ビジネス ロジックなどが発生する場所) からデータ オブジェクトを要求し、それらをビューに渡すことだと考えています。したがって、あなたの場合、データ オブジェクトをセルに渡すだけです。[self setNeedsDisplay];(再描画をトリガーするためにも呼び出されるセッターを使用して、セルのプロパティとしてそれを持っています)

そうは言っても、コントローラー/ビューがそれらに対して何も悪いことをできないように、私はモデルレイヤーが不変のデータオブジェクトを提供することを好む傾向があります:)このアプローチでは、コントローラーがデータオブジェクトを編集したい場合は呼び出す必要がありますそうするためのモデル層のメソッド。

もちろん、これは私の個人的な意見とアーキテクチャの選択にすぎません。そして明らかに、既存の UI オブジェクト (つまり、UILabel など) の場合、データ オブジェクトを渡すことができません。ビュー コントローラーからテキスト プロパティを直接設定する必要があります。


PSCellAppDelegateは、View Controller の名前としては不適切です。クラス名の最後ViewControllerCellAppViewController. この命名スキームにより、1 週間程度でコードに戻っても、すべてが何をしているのかを理解することが非常に簡単になります :)

于 2012-08-29T16:37:06.300 に答える
0

これまでのところ、「CellView」クラスから「CellData」メソッドを呼び出すべきではないことがわかりました。

これは誤解のように聞こえます。コントローラーによってCellViewシングルが渡されるようなものは非常に一般的です。CellDataビューは、表示を担当するモデル オブジェクトを自由に照会できます。これは MVC の違反ではありません。通常、モデル オブジェクトに書き込むべきではなく、通常は他のモデル オブジェクトと対話するべきでもありません。

于 2012-08-29T16:43:00.447 に答える