KVO プロパティの遅延読み込み
feedbringer が止まってしまって、海外の Cocoa 動向がさっぱりなのだけど(手元の OPML のバックアップが古すぎて使えないというオチ)、ひさびさに Theocacao から。
"Lazy Loading of KVO Observed Properties" というエントリで KVO と KVC (おおざっぱに言えば Cocoa バインディング)で、あるキーの値の読み込みを遅延させる方法について例示されている。いわゆる Proxy パターン。この手法はアプリケーションで扱うオブジェクトがたくさんあるけれど、初期状態で要求される(たとえば画面に表示する)オブジェクトが少ないときなんかに有効。たとえば NSTreeController を経由して NSTreeView や NSOutlineView を利用するときなんかね。Theocacao の例で挙げられているのは、オブジェクトサイズが巨大というケース。
このテクニックを使うと、オブジェクトにデータ取得の役割(もしくはその役割をもつデータ生成機構への参照)を持つ必要があって、モデルオブジェクトがシンプルになりにくい。なんだか結局 delegate と同じような仕組みになってしまうなあ、ということをつらつらと考えた。
じゃあ Proxy オブジェクトか?Core Data の faulting なんかはそういうことだし。