Mac用USBデバイス-95 Cocoaバインディングのまとめ [Mac用USBデバイス工作]
前々回そして前回とCocoaバインディングの技術的な基礎になっていることがらを概観した。今日はそのまとめをする。一般論はこのくらいにして、さっさと実際のコードを書きたい。
Cocoaバインディングはさらに難しい。線でつなぐことさえなくなってインスペクタでの設定が主になる。これがあまり直感的ではない。もちろんプログラマティックにできるが、そのときにはインスペクタで設定するの比べれば記述量はかなり多くなるのでメリットはある。一度全部プログラマティックに書き下した方が納得がいきやすいような気がする。
それとやはり設定すべきオプションが非常に多く、見通しが悪い。なかなかターゲット/アクションと同じようにはいかないのはわかるが、ちょっと厳しい。
ということでCocoaバインディングの使い方はアップルのガイドや ここや ここや ここなどの親切なサイトがあるのでそちらを参照していただきたい。
Cocoaバインディングは実はけっこう複雑で、できるだけいろいろなパターンに対応するためにControllerにもいくつかの種類があって、メソッドも昨日のふたつだけではすんでいない。オブジェクトの構造によっては細かく使い分ける必要がある。
しかし、この考え方のおかげでMac OS X10.4からはCore DataというModelの部分まで肩代わりしてくれるフレームワークが登場した。これでView、Controller、Modelすべてのひな形ができあがってしまっていて、ではプログラマはなにをするのか?というとアイデアの勝負なのである。ジジイには厳しい話である。
5.1.3 Cocoaバインディングのわかりにくさ
しかし、Interface Builderを使ったターゲット/アクションの設定に比べてCocoaバインディングはどうもわかりにくい。ターゲット/アクションはオブジェクト同士を線でつないで、IBOutlet、あるいはIBActionを指定すればいい。実はこれも最初IBOutletとIBActionの使い分けがよくわからなかった。違うことをしているのに同じ「線でつなぐ」という動作をすることが混乱のもとだった。全く別のことであると考えなおしてやっと理解できるようになった。Cocoaバインディングはさらに難しい。線でつなぐことさえなくなってインスペクタでの設定が主になる。これがあまり直感的ではない。もちろんプログラマティックにできるが、そのときにはインスペクタで設定するの比べれば記述量はかなり多くなるのでメリットはある。一度全部プログラマティックに書き下した方が納得がいきやすいような気がする。
それとやはり設定すべきオプションが非常に多く、見通しが悪い。なかなかターゲット/アクションと同じようにはいかないのはわかるが、ちょっと厳しい。
5.1.4 実行効率とここまでのまとめ
すべてを文字列でやり取りするので直接のメソッド呼び出しよりは遅くなるということが予想できる。特に僕のような古い人間は「メソッドが呼び出されるたびに文字列の比較をやるのか!?」と驚くけど、しかし実際にはユーザインターフェイスに関連して使われるだけで、ループの深いところで1msecに何十回も呼ばれるというようなものではない。実行効率を気にしてCocoaバインディングを使わずにこれまでとおなじようにControllerを作ったとしてもレスポンスにはほとんど影響はない。ということでCocoaバインディングの使い方はアップルのガイドや ここや ここや ここなどの親切なサイトがあるのでそちらを参照していただきたい。
Cocoaバインディングは実はけっこう複雑で、できるだけいろいろなパターンに対応するためにControllerにもいくつかの種類があって、メソッドも昨日のふたつだけではすんでいない。オブジェクトの構造によっては細かく使い分ける必要がある。
しかし、この考え方のおかげでMac OS X10.4からはCore DataというModelの部分まで肩代わりしてくれるフレームワークが登場した。これでView、Controller、Modelすべてのひな形ができあがってしまっていて、ではプログラマはなにをするのか?というとアイデアの勝負なのである。ジジイには厳しい話である。
2010-04-21 22:02
nice!(0)
コメント(0)
トラックバック(0)
コメント 0