カテゴリ

Objective-cにはカテゴリとよばれる仕組みがある。
このカテゴリは非公式プロトコルとも呼ばれる。
(もちろんObjective-cにはプロトコルという仕組みもあるのでなかなかややこしいが)

Objective-cのカテゴリそのものについては
http://journal.mycom.co.jp/column/objc/008/index.html
に詳しく載っている。

カテゴリの出番は結構たくさんある。

特にGUIの開発では,NSObjectのカテゴリを上書きする形でdelegate(委譲)してもらう事でイベントハンドラー的な処理を行う。

デザインパターンでいったらチェーンオブレスポンシビリティだ。

このカテゴリという機能は便利で,すでに定義されているものを利用するのもいいし,自分で後からカテゴリを定義するのもやりやすい。

この機能のおかげでGUI開発は非常に楽になる。


しかしこのカテゴリはやっかいな所がある!

うっかりカテゴリ化されていないメソッドを定義してもコンパイラが通ってしまうことだ!!

具体的にはうっかりメソッド名を間違えてしまって,いつまでたっても呼び出されない!という事が起きる。。。


メソッド名ぐらい間違えるなよ。。。と思う人もいるかもしれないが,Objective-Cではメソッド名+引き数名までびっしりとかかなきゃいけないので。。。

まぁカテゴリのメソッド名はコピペが必須ということですね。