デフォルトで新しいウィンドウでドキュメントを開くため、これはおそらくドキュメントベースのアプリケーションではないことは間違いありません。
このようにウィンドウをレイアウトするNSSplitView
には、3つのペインを含むがあります。各ペインには、オプションで、からロードされたビューを含めることNSViewController
ができます。これは、コードをモジュール化しておくのに役立ちますが、これが適切かどうかは、何をしようとしているかによって異なります。
左側のペインはNSOutlineView
(NSTableView
サブクラス)、中央はNSTableView
ですが、右側のビューがどのように作成されるかは正確にはわかりません(多くのカスタムNSView
やその他のもの、場合によってはWebView
)
そのポップオーバーオプションウィンドウはおそらくNSPopover
(を含むNSViewController
)ですが、それはOS X 10.7とのみ互換性があるため、下位互換性とより簡単なカスタマイズのために完全にカスタム化することもできます。
また、これはかなり複雑な例であり、見た目よりも作成が難しいカスタムコントロールがたくさんあることにも注意してください。
左側のアウトラインビューを取得して未読のカウントとアイコン(メモリから)を取得することはAppKitに組み込まれていないため、すべてカスタム作成されました。そのようなことを行うには、NSCell
vsNSView
をしっかりと理解する必要があります。理想的には、Core Animationレイヤーに裏打ちされたビュー、およびさまざまな側面で何を使用するかについても知っている必要があります。
ウィンドウには通常よりも高いタイトルバーがあります。これは、ウィンドウ全体を最初から作成しない場合でも、開発者がそれを機能させるためにおそらくいくつかのクレイジーなことをしなければならなかったことを意味します。
それはほんの始まりに過ぎません。そこには、カスタムでゼロから作成された本当に素晴らしいデザインがたくさんあります。
Macアプリの設計は難しい場合があります。AppKitはかなり古く(翌日から)、多くのレガシーが残っています。一方、iOS上のUIKitは非常に優れています。Appleは明らかに過去から学び、物事をはるかに改善しました。
その背後にあるコントローラーとモデルについてはほとんど触れていません。あなたがそれをすることができる多くの異なった方法があります。NSKeyedArchived
永続性のために、ほんの数例を挙げると、CoreData、sqlite、を使用できます。ブレントシモンズ(別のRSSリーダーの過去の開発者であるNetNewsWire)は、それについていくつかの興味深いブログ投稿を書きました:
http: //inessential.com/2010/02/26/on_switching_away_from_core_data
http://inessential.com/2011/09/22/core_data_revisited
モデルとコントローラーを設計する方法は、実際には特定の問題によって異なります。ただし、Cocoaは実際にMVCに固執することを強制します。そうしないと、物事が乱雑になることが保証されます。
すべてがお役に立てば幸いです。私も自分自身を学んでいるだけです。