WindowsにおけるイベントとCocoaにおけるdelegate

Windowsでの開発の場合、例えばVBならフォームにコントロールを貼り付けて、そのコントロールから発生するイベントのハンドラを親フォームに記述する。

Cocoaの場合、それに相当することをしようとすると、イベントハンドラを持ったクラスを作って、それをコントロールのdelegateに設定する。

Cocoaの場合は、ウィンドウに直接書くんじゃないのね。

VBで、例えば2つのコントロールのスクロールを1本のスクロールバーで同期化するってことをやろうとすると、スクロールバーからのイベントハンドラ、つまり同期化の処理を、フォームに書く必要がある。

フォームなんてのは普通、コントロールの数も違えばやることが全然違うので、普通は使い回さない。

いきおいこのようなイベントハンドラが各フォームにコピペされるという羽目になる。

Cocoaでは、例えば複数のスクロールすることのできるコントロールやビューをメンバとして持つクラスを作っておいて、それにイベントハンドラを書いて各メンバへスクロールメッセージを送るようにしておけば、このクラスは再利用できる。

それともVBでこういうケースのもっとうまい解決方法があるんかな。