Apple のサンプルコードの CocoaSlides をようやくちゃんと読んだ。これを作ったヒトはスゴいや。ものすごく綺麗に MVC してるのね。
これを読んで、最新の Cocoa でグラフィカルなコンポーネントを扱うプログラムを書くときの方針がだいたい理解できた。
- KVC なモデルエンティティを V とは無関係に定義する。
- バウンダリオブジェクトを NSView を継承して作る。
- 1のエンティティを2のコンポジションとして内包する。
- 2のバウンダリオブジェクトをルートビューに追加する。
- KVO で、1の属性の変化を2で観測して、適宜再描画する。
という手順。ちなみに NSView で管理するのは、-[NSView setWantsLayer:(BOOL)flag] で Core Animation を使う設定にしておけば、NSView の階層に合わせて背後で適切に CALayer の階層を作ってくれて、エフェクトなどがかけやすいのと、自分でドラッグ&ドロップの基本部分を書かなくても済むから。このサンプルコードは、現代の Cocoa プログラマは必読のコードだと思う。
ちなみに、エンティティやバウンダリオブジェクトなどの概念も、Cocoa よりも基本の部分で、現代では必要なプログラミング知識だと思われます。↓の「ユースケース入門」が入門向けには良いと思われますので、必要な方はぜひ。入門が終わった方は「ユースケース駆動開発実践ガイド」で補習を。ただし、後者は若干誤訳が多い(とくに図)ので、原書 と照らし合わせながら読むべきかも。
コメントを書く