Month of 10月, 2009

CocoaとC#のデリゲート

以前作成したアプリをv10.6SDKベースでコンパイルしたら警告がでました。何でかなーと思って調べてみるとアプリケーションで使用しているNSRuleEditorのdelegateメソッドがNSRuleEditorDelegateプロトコルに昇格(?)していました。なので、delegateメソッドを実装するクラスは<NSRuleEditorDelegate>しなければいけませんでした。ドキュメント10.6 Symbole Changesを見てみるとNSWindowはじめ多くのdelegateがプロトコル化されていることがわかります。

Objective-C 2.0でプロトコルでもオプション指定ができるようになったので、カテゴリ(非形式プロトコル)定義されていたデリゲートが形式プロトコル化されるのは自然な流れかもしれません。これまではよほど大量のデリゲートメソッドを実装するのでなければ、コントローラクラスの片隅にチョコっとデリゲートメソッド実装していましたが、オブジェクトの独立性や保守性を考えれば、今後はきちんとデリゲート用のクラスを作成するという方向になっていくのでしょう。

デリゲートといえば、前エントリでは嬉々としてデリゲート便利!などと騒いだ手前恥ずかしいのですが、冷静になってみるとInvoke(delegate)はやっぱり単なる「関数ポインタ」と言ったほうがいいのじゃないかと思ったりしてます。設計上の理由によりメソッドの実装を”他オブジェクトに譲(ってもいい|るべきだ)”とすることをデリゲートと呼ぶのであって、たとえばコールバックでの関数ポインタの代替として(文法上)のデリゲートとは意識的に分けて考えたほうが正しいあり方のように思います。

C#でサブスレッドからプログレスバーにアクセスする(デリゲート・ラムダ式は快適!)

in

C#/.Netへの移行は徐々に軌道に乗りつつあります。MFC時代は面倒だったクエリを別スレッドで処理しつつメインフォームのプログレスバーをインクリメントするのも簡単に実現できたので気分良くしてます。

スレッドを起こすのは実に簡単。引数も渡せます。

整理HACKS!

in

若い頃はこの手の本には、鼻白むことが多かったけれど最近はそうでもない。そもそも多大な期待などないからかもしれないけど何か一つでも「!?」ってことがあれば良いなって感じ。でもね、この本にあったんですよ長年の懸念だったIMEバーの置き場。環境ハック30

「IMEバーは画面中央に置く」

画面下の右や左に立てたり寝かせたりしていましたがこれいいです。マックの場合、ウィンドウ中央にはタイトルがくるのでやや右に配置していますが会社のウィンドウズではまさにど真ん中にしています。ぽちっとアスクルもこの本で知ったし、まあ高いっていえば高い本ですが個人的にはこの"環境ハック30"だけで十分。

IMEの置き場

ここに置き始めて約一ヶ月が経過しましたが今ところ邪魔になって動かしたことはほとんどないですね。IBの時、微調整したくらいです。それにしても何故、これまで下の方に配置することしか思い浮かばなかったのだろうか?

整理HACKS!―1分でスッキリする整理のコツと習慣
整理HACKS!―1分でスッキリする整理のコツと習慣
おすすめ平均
starsいくつかの知恵が得られるだけでも十分。
stars単なる身の回りの整理ではなく、仕事のプロセス改善のためのHACK
stars私には無理なテクもあるけど、これはおもしろい!
stars「整理とはデザイン」の妙
starsまねできない懲り方

Amazonで詳しく見る by G-Tools