Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC

< 前ページ次ページ >

ルートクラスのカテゴリ

カテゴリは、ルートクラスを含め、任意のクラスにメソッドを追加できます。NSObjectに追加したメソッドは、コードにリンクするすべてのクラスで利用可能になります。メソッドの追加は役立つこともありますが、かなり危険な場合もあります。カテゴリによる変更内容は熟知されていて、影響も限定的であるように思えますが、継承によって影響が広範囲に及びます。未知のクラスに予期しない変更を加えてしまう可能性があります。つまり、行ったことの結果をすべて知ることができないかもしれないのです。さらに、他の開発者も変更があったことを知らなければ、変更による影響も理解できません。

さらに、その他にも、ルートクラスにメソッドを実装する際の注意点が2つあります。

通常、クラスオブジェクトはクラスメソッドのみを実行できます。しかし、ルートクラスに定義されているインスタンスメソッドは特例です。それのメソッドは、すべてのオブジェクトが継承するランタイムシステムへのインターフェイスを定義します。クラスオブジェクトは完全なオブジェクトで、同じインターフェイスを共有する必要があります。

この機能は、NSObjectクラスのカテゴリで定義するインスタンスメソッドが、インスタンスだけでなくクラスオブジェクトによっても実行される可能性を考慮しなければならないことを意味します。たとえば、メソッドの本文では、selfがインスタンスだけでなく、クラスオブジェクトを指すこともあります。ルートインスタンスメソッドへのクラスアクセスの詳細については、FoundationフレームワークリファレンスのNSObjectクラス仕様を参照してください。



< 前ページ次ページ >


Last updated: 2007-10-31




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
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