カテゴリーでのObjective-C

転送:カテゴリーでのObjective-Cで

カテゴリーのObjective-Cの1つは非常に一般的に使用される機能です。カテゴリは、私たちは、クラス増加のための方法を実装するクラスの内部ケースを知らないように、別のカテゴリをサブカテゴリを追加することなく、既存のクラスのメソッドに追加することができます。

私たちは、クラスのフレームワークのメソッドを増やしたい場合は、カテゴリは非常に有効です。この方法で追加された新しいカテゴリには、新しいメソッドを追加し、実行時にクラスの一部となり、既存の方法の使用に差は追加カテゴリのクラスやその他の方法により、存在しないのと同じになりますサブクラスは継承しています。クラスは、クラスのインターフェイス定義のようなインターフェイスの外観を定義していますが、違いは括弧カテゴリ名にリストされ、それらはクラス名の後ろに位置しています。次のようにクラスのインターフェイスファイルを拡張してインポートする必要がありますカテゴリーは、標準の構文は次のとおりです。

#importを「クラス名の.h」

@interfaceクラス名(クラス名)

@終わり

そしてクラスは、クラスがインタフェースファイルを達成するために、それをインポートする必要があり、このカテゴリでは、共通の命名規則、ベースファイル名は、クラス名が続き、拡張クラス名のカテゴリです。次のようにそのため、「クラス名」の名前は、+「カテゴリ名は」+「M」実装ファイルにはなります。

#import「カテゴリ名カテゴリ名の.h」

@implementationクラス名(クラス名)

@終わり

注意:カテゴリは、新しいクラスのインスタンス変数を宣言しない、それが唯一の方法が含まれ、その後、クラススコープ内のすべてのインスタンス変数は、これらのクラスメソッドでアクセスすることができます。彼らも、それらの変更@private変数を含めるには、クラス、複数のカテゴリとして、クラス内で宣言、インスタンス変数のすべてを追加できますが、名前はカテゴリごとに異なる必要があり、各カテゴリには、宣言とメソッドの異なるセットを実装する必要があります。

私たちは、サブクラスが同じでないと、このクラスのそのアプリケーション内のすべてのオブジェクトは、機能しているカテゴリでカテゴリを変更すると、カテゴリのメンバ変数を増加させないことに注意してください、我々はまたにカテゴリを使用することができます書いた元のクラスメソッドが存在します。

ます。https://www.cnblogs.com/hxxy2003/archive/2013/04/16/3023668.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34032792/article/details/93892253