のインスタンスを使用しNSArray
てポップアップボタンを設定している場合、MVCに関してどこでNSArray
初期化する必要がありますか?モデルに該当すると思いますが、その場合、配列を初期化するにはどうすればよいですか?アレイを含む新しい実装ファイルを開始しますか?(明らかに、モデルではなくコントローラーに該当するため、アプリデリゲートファイルを使用したくありません。)
4 に答える
MVCの「モデル」部分は、アプリが保存、提示、および/またはユーザーが操作できるようにするデータです。アプリがMac、iPhoneなどで実行されていても、ほぼ同じです。「ビュー」はUIです。これは、ユーザーが実際に画面に表示するものです。コントローラは、これら2つの間にある部分です。これは、アプリの特定の動作ロジックを実装するだけでなく、ビューレイヤーをモデルレイヤーに「接着」する役割を果たします。
つまり、ポップアップボタンに表示されるアイテムの配列は、モデルの一部である場合とそうでない場合があります。実装している特定のUIに完全に依存します。モデルで表される多数のオブジェクトの間で選択が行われる場合、配列の内容は実際にモデルの一部になりますが、コントローラーが別の形式でモデルからアイテムを引き出し、NSArrayに変換する可能性があります。また、実行するアクションの固定リストなどを選択する方法でもあります。その場合は、コントローラーレイヤー自体の一部としてより適切になります。
言い換えれば、あなたの質問に対する答えは誰もありません。ただし、コントローラーが少なくとも問題のアレイをUIに提供し、そのコンテンツに対して完全に責任を負う可能性があります。それはすべて、あなたが達成しようとしていることによって異なります。
モデルオブジェクトは、通常はviewDidLoad
メソッド内のコントローラーオブジェクトによって初期化する必要があります。モデルオブジェクトが別のモデルオブジェクトによって所有されている場合(たとえば、カスタムモデルオブジェクトにNSArray
インスタンス変数がある場合、カスタムオブジェクトは親であり、NSArray
は子です)、その子モデルオブジェクトは初期化されたメソッドで初期化する必要があります親モデルオブジェクトの。
NSArray
あなたはそれ自体がモデルオブジェクトだと思うのでviewDidLoad
、コントローラーオブジェクトのメソッドで初期化する必要があります。
初期化はモデルオブジェクト内で行われますが、その初期化はビューコントローラから呼び出される可能性があります(これらが単にコントローラと呼ばれることを望みます-ModelControllerクラスはありません)。おそらくviewDidLoadにありますが、実際にはユースケースに最適な場所であればどこでも必要とする。
これは1つの答えに過ぎず、必ずしもすべての人がObjectiveCでアプリケーションを開発する方法ではありません。
小さなデータモデルまたはビューにスコープされたモデルを持つアプリがある場合、そのビューにスコープが制限されている場合は、モデルをAppDelegateまたはviewControllers自体に配置します。
それらは、そのデータに対してアプリ内で意味のある場所に最も近い場所で初期化されます。
ホーム画面コントローラーまたはメイン画面コントローラーを表す「FAT」viewControllerが表示されることがあり、人々はそのクラスにモデルを積み上げます。その非常に一般的です。
ただし、大規模なデータモデル(ビューの有効期間にスコープされていない有効期間を持つモデルが多数ある)を使用するアプリケーションがある場合は、アプリケーションに* myAppNameHere * AppModelというクラスを作成し、アプリケーションのストレージを一元化します。モデルを作成し、必要に応じてサービスクラスを使用して、モデルにデータを入力/更新するためのデータを要求します。
これは1つのアプローチにすぎません。そして素晴らしい質問です!