Cocoa と MVC

Cocoa全般プログラミング全般
2008年12月 3日 18:18

cocoa_slide.jpg

Apple のサンプルコードの CocoaSlides をようやくちゃんと読んだ。これを作ったヒトはスゴいや。ものすごく綺麗に MVC してるのね。

これを読んで、最新の Cocoa でグラフィカルなコンポーネントを扱うプログラムを書くときの方針がだいたい理解できた。

  1. KVC なモデルエンティティを V とは無関係に定義する。
  2. バウンダリオブジェクトを NSView を継承して作る。
  3. 1のエンティティを2のコンポジションとして内包する。
  4. 2のバウンダリオブジェクトをルートビューに追加する。
  5. KVO で、1の属性の変化を2で観測して、適宜再描画する。

という手順。ちなみに NSView で管理するのは、-[NSView setWantsLayer:(BOOL)flag] で Core Animation を使う設定にしておけば、NSView の階層に合わせて背後で適切に CALayer の階層を作ってくれて、エフェクトなどがかけやすいのと、自分でドラッグ&ドロップの基本部分を書かなくても済むから。このサンプルコードは、現代の Cocoa プログラマは必読のコードだと思う。

ちなみに、エンティティやバウンダリオブジェクトなどの概念も、Cocoa よりも基本の部分で、現代では必要なプログラミング知識だと思われます。↓の「ユースケース入門」が入門向けには良いと思われますので、必要な方はぜひ。入門が終わった方は「ユースケース駆動開発実践ガイド」で補習を。ただし、後者は若干誤訳が多い(とくに図)ので、原書 と照らし合わせながら読むべきかも。

コメントを書く


トラックバックはありません。

トラックバックURL: http://numata.designed.jp/mt-tb.cgi/161