ヒレガス本 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
に置いておきます。
Comments
comments powered by Disqus