NSWindowのupdateメソッドについてのメモ
- NSWindowのupdateメソッドは、NSWindowDidUpdateNotificationnを通知センターにポストする以外の処理は行わない。
- NSApplicationのupdateWindowsメソッドを呼び出す事で、アプリケーション内の全てのNSWindowに対してupdateメソッドを呼び出す事が出来る。
- イベントループが一回転するたびに、NSWindowのupdateメソッドは呼ばれる。
- updateメソッドが呼ばれるタイミングはNSWindowが再描画される前。
- NSWindowのサブクラスでは、updateメソッドをオーバーライドして、モデルデータの内容を各種UIに反映する事が出来る。
これらの事を考えると、各種コントロールをアップデートするには、
- NSWindowのupdateメソッドをオーバーライドする。
- windowに乗っている全てのview(control)に対して、NSUserInterfaceValidationsプロトコルに基づく更新作業を行う。
と言うのがCocoa的に正しいUI更新の方法かもしれない。
MenuやToolbarはデフォルトでこのような更新メカニズムが実装されている。 NSControlにそのような仕組みが無いのは、歴史的理由とCPUパワーの問題と思われる。
現状ではCPUパワーは有り余っている。よってイベントループ毎にcontrolを更新しても問題ないと、私は判断し実装する事にする。
参考文献
OpenStepリファレンス