私はiOSのバックグラウンドから来て、Cocoaを学び始めています。 iOSでは、iPad
とiPhone
のターゲットが複数ない限り、通常は1つのウィンドウで、UIViewControllers
を使用して画面を管理します。ほとんどの場合、すべての新しい画面はUIViewController
にマップされます。
ただし、カカオでは、これは、新しい画面/ウィンドウがNSWindow
によって管理され、そのサブコンポーネントがNSViewController
によって管理されるという逆のようです。したがって、複数のウィンドウアプリがある場合は、ウィンドウごとに個別のNSWindowController
を用意する必要があります。
このアプローチは正しいですか、それとも私は誤解していますか?
IPhoneSDKとLeopardSDKで、彼らはビューコントローラー、またはNSViewControllerとUIViewControllerを導入しました。彼らの名前が示すように、彼らがしていることはビューを管理することです
ビューコントローラは、ビューを管理するためのものです。 UIデザインの現在の傾向は、シングルウィンドウ、マルチビューです。つまり、1つのウィンドウがあり、その内部には、さまざまな目的のために設計されたさまざまなビューのグループを入れ替えることができます。したがって、View Controllerは、確立されたパターンのプログラマーのためにこれらを処理します。プラットフォームはシングルウィンドウおよびマルチビューモデルに基づいているため、現在、ビューコントローラはiPhoneおよびiPodtouchプログラミングにとって非常に重要です。ただし、MacではViewControllerの使用があまり一般的ではないようです。 NSWindowControllerのようなウィンドウコントローラーはどうですか?対応するUIWindowControllerは、iPhoneおよびiPod touch環境には存在しません。これらの環境にはウィンドウが1つしかないためです。ビューコントローラとは異なり、NSWindowControllerはドキュメントベースのプログラム用です。さて、ドキュメントベースのプログラムは複数のウィンドウを使用できます。したがって、Appleのドキュメントにあるように、NSWindowControllerはドキュメントベースのプログラム用であると考えるのが妥当です。
私もiOSから来て、しばらく前にMacアプリのコーディングを始めました。主に、Appleのドキュメントから学びました。
私の印象では、デスクトップではNSViewController
sはほとんど必要ありません(1つの大きな例外は、GarageBandのウェルカム画面のように、タブと複数のビューを備えたウィンドウです)。
ほとんどの場合、ウィンドウごとに1つのNSWindowController
があります。まず、NSWindow
とNSWindowController
(およびドキュメントベースのアプリを作成している場合はNSDocument
)の関係を学びます。
正しく理解できたら、NSViewController
で実験を開始します。
PDATE: Macアプリでもstoryboardsが導入されたため、Appleは、ほとんどのビュープレゼンテーションロジックを移行する必要があると予想しています。古いNSWindowController
から新しいNSViewController
まで、iOSアプリの構造に沿ったものです。正確なwhere線を引く、またはウィンドウコントローラにどのような種類のコードを残す必要があるか(またはサブクラス化する必要があるかどうか)。