Objective-C

カテゴリ

カテゴリはメソッドのコレクションを定義して、クラス定義後に追加オーバーライドを行なう機構。特徴的なのは、メソッドのオーバーライドが、カテゴリがロードされたタイミングで実行時に行われるという点で、これにより外部モジュールで基盤モジュールを置き換えることができる。したがって、カテゴリを用いればオリジナルコードの再コンパイルなしにルートクラスの挙動を変更することさえ可能となる。また機能追加のためだけのサブクラス化を行なう必要がなくなる点は特筆に値する。カテゴリが上述のInformalプロトコルに利用できるのは、ロードが実行時に行われるという構造上、コードのリンク時に実装が存在する保証がなく、インターフェースのみが先行する形になることから。応用範囲は非常に広く、単純にクラス定義を複数の機能クラスターから構成するために用いることもあれば、先に挙げたフレームワークのパッチやInformalプロトコルに用いるケースなど多岐にわたる。プログラムの可読性や設計のしやすさ全般に貢献している。

戻る