ヒレガス本 18章 課題

18章で作成したアプリケーションを元に以下の3つの機能を入れるとの事。

  • ドキュメントベースにする
  • ファイルの保存と再生に対応する
  • Undo/Redoに対応する

上記3つは簡単だった。 ハマったのは、viewとdocumentのデータを同期するのにbindingを使った所。

IBを使って操作していると、bind:toObject:withKeyPath:options:1行呼出すだけで双方向にデータを同期してくれると勘違いしていた。

双方向にデータをやり取りするには、それぞれにbind:toObject:withKeyPath:options:を呼出す必要があった。

IB上ではおそらくNSControllerが仲介して逆方向への伝播の設定を行っているのだと思われる。

コード上で行うには、今後は Implementing Your Own Cocoa Bindings を参考にして

[NSObject propagateValue:(id)value forBinding:(NSString*)binding];

を使うとよいかもです。

プロジェクトファイルは、 OvalDoc.zip に置いておきます。