きりかノート 3冊め

おあそびプログラミング

KVO プロパティの遅延読み込み

feedbringer が止まってしまって、海外の Cocoa 動向がさっぱりなのだけど(手元の OPML のバックアップが古すぎて使えないというオチ)、ひさびさに Theocacao から。

"Lazy Loading of KVO Observed Properties" というエントリで KVO と KVC (おおざっぱに言えば Cocoa バインディング)で、あるキーの値の読み込みを遅延させる方法について例示されている。いわゆる Proxy パターン。この手法はアプリケーションで扱うオブジェクトがたくさんあるけれど、初期状態で要求される(たとえば画面に表示する)オブジェクトが少ないときなんかに有効。たとえば NSTreeController を経由して NSTreeView や NSOutlineView を利用するときなんかね。Theocacao の例で挙げられているのは、オブジェクトサイズが巨大というケース。

このテクニックを使うと、オブジェクトにデータ取得の役割(もしくはその役割をもつデータ生成機構への参照)を持つ必要があって、モデルオブジェクトがシンプルになりにくい。なんだか結局 delegate と同じような仕組みになってしまうなあ、ということをつらつらと考えた。

じゃあ Proxy オブジェクトか?Core Data の faulting なんかはそういうことだし。