|
|
Log In | Not a Member? |
Contact ADC |
| < 前ページ次ページ > |
カテゴリを使用して、他の実装者が定義したクラスを拡張することができます。たとえば、Cocoaフレームワークで定義されているクラスにメソッドを追加することができます。追加したメソッドはサブクラスに継承され、実行時にはクラスのオリジナルのメソッドと区別がつきません。
カテゴリは、サブクラスの代わりに使うことができます。既存のクラスを拡張するサブクラスを定義するのではなく、カテゴリによって、クラスに直接的にメソッドを追加することができます。たとえば、NSArrayなどのCocoaクラスにカテゴリを追加できます。サブクラスの場合のように、拡張するクラスのソースコードは必要ありません。
カテゴリに追加したメソッドによって、クラスの機能を拡張したり、クラスが継承するメソッドをオーバーライドすることができます。また、カテゴリではクラスインターフェイスで宣言されているメソッドをオーバーライドすることもできます。ただし、同じクラスの別のカテゴリに宣言されているメソッドを確実にオーバーライドすることはできません。カテゴリはサブクラスの代わりではありません。カテゴリでは、クラスの@interfaceセクションで明示的に宣言されているメソッドの再定義を避けるのが最良です。また、クラスでは同じメソッドを複数回定義できないことにも注意してください。
カテゴリで継承メソッドをオーバーライドする場合、新しいバージョンではsuperへのメッセージによって、通常どおり、継承バージョンを組み込むことができます。ただし、カテゴリメソッドには、同じクラスに定義されている同じ名前のメソッドを組み込む方法がありません。
また、カテゴリを使用して、新しいクラスの実装を別々のソースファイルに分散できます。たとえば、大きなクラスのメソッドをいくつかのカテゴリにグループ化し、各カテゴリを異なるファイルに入れることができます。このように使用することで、カテゴリはさまざまな点で開発プロセスに恩恵をもたらします。
関連するメソッドをグループ化する簡単な方法を提供します。異なるクラスで定義した類似のメソッドを、同じソースファイルにまとめることができます。
複数の開発者がクラス定義に取り組むような大きなクラスの管理を簡素化できます。
非常に大きなクラスについて、インクリメンタルコンパイルのメリットがある程度得られます。
よく使用するメソッドについて、参照の局所性を向上するのに役立ちます。
個々のアプリケーションに合わせてクラスを異なるように設定することが可能となり、同じソースコードのさまざまなバージョンを維持する必要性をなくします。
また、他のクラスが実装できるインターフェイスの宣言で説明しているように、カテゴリを使って非形式プロトコルを宣言することもできます(非形式プロトコルを参照)。
| < 前ページ次ページ > |
Last updated: 2007-10-31
|
Get information on Apple products.
Visit the Apple Store online or at retail locations. 1-800-MY-APPLE Copyright © 2007 Apple Inc. All rights reserved. | Terms of use | Privacy Notice |