1

私は(iosではなく)cocoaを学んでおり、作成するすべてのコードでMVCを理解して実装したいと考えています。私はこのデザインのロジックを学び、理解し、それを自分のアプリ(レッスンやチュートリアルなどの非常に小さなアプリ)で使用しようとしています。

ほとんどのチュートリアルでは、MVCの例を2つのファイルで示しています。ModelとappControllerを1つのクラス/ファイル(NSObjectのサブクラス)にまとめ、次にビューを独自のファイル(NSView)にまとめます。しかし、MVCについて考えるとき、私は常に3つのファイルに3つのクラスがあると思います。

クラス/ファイル1.モデル(名前、人、年齢、配列など)。クラス/ファイル2. appController-脳(人に名前や年齢などを与える)…クラス/ファイル3.ビュー(例:人を窓。

では、モデルは常にコントローラーとは別のファイルにある必要がありますか?

もう1つの質問は、通信に関するものです。上記の例では、ModelとappControllerはどのようにデータを共有しますか?モデルはappControllerのサブクラス(appControllerはNSObjectのサブクラス)になるので、両方がivarを共有できますか?

これを読んでくれてありがとう。私の混乱を解消していただければ幸いです。

4

2 に答える 2

2

あなたはモデルについて正しいです、これらは人、ニュースなどのような抽象データ型である可能性があります。あなたのビジネスオブジェクトがあなたのモデルを形成していると言うことができます。ビューは、データをどのように表現するかです。たとえば、tableViewCellにニュース項目を表示する必要があります。そのニュースのヘッドライン、日付と時刻を含むビューを作成します。ただし、このビューはデータを取得するためにモデルと直接通信しません。ここで、ブレインと呼んでいるコントローラーが入ります。コントローラーは、このビューが表示されることを認識しています。この場合、コントローラーにはモデルオブジェクトニュースオブジェクトがあります。したがって、モデルオブジェクトからビューにgiveデータを提供して、ビューにデータを入力します。したがって、2番目の質問に対する答えがここにあります。アプリコントローラーのサブクラスとしてモデルを持つ必要はありません。ただし、コントローラーにはモデルのオブジェクトがあります。このオブジェクトは、使用する最終段階にあります。つまり、重要なポイントは次のとおりです。モデルはコントローラーから分離されており、両方を表示します。ビューとモデルは直接通信しません。コントローラは、ビューとモデル間の通信のソースとして機能します。モデルはappcontrollerのサブクラスではありません。コントローラは、オブジェクトを使用するためにオブジェクトをモデル化する必要があります。

それがあなたの混乱を明らかにしたことを願っています。

于 2012-09-12T11:32:35.627 に答える
0

モデルがViewやViewControllerよりもいくらか抽象的であることは事実です。

モデルはクラスの場合もありますが、単純なモデルの場合(たとえば、ViewControllerが他のViewControllerから取得できる単一の値のみ)、ViewController内にある場合もあります。

重要な点は、ビューが独自のデータを所有することはなく、表示するだけであるということです。CS193Pの講義1には、優れたイラストがたくさんあり、ここにpdfとして講義をダウンロードできます。

また、ビューが独自のデータを所有することはできませんが、そのデータはビュー内のデータ(たとえば、受信したデータの量からサイズが派生するビュー内のボックス)から完全に派生しますが、そのボックスのサイズは機能します。ビューがそれ自体を描画しているときにビューによって出力されます。

また、この講義で参照している電卓の例もあります。私はこれらの場所の概念について多くを学びました。今は構文に苦労しています。

于 2012-09-12T13:48:23.470 に答える