4

最後のバージョン ox xCode (4.3) では、.m ファイルでインターフェイス宣言が行われる定義済みのテンプレート (Master/Detail テンプレートなど) を見てきました。たとえば、ファイル MyFile.h には次のものがあります。

@interface MyFile

@property (nonatomic, retain) NSString *someProp;

@end

MyFile.m ファイルには次のように記述されています。

@implementation MyFile

@interface MyFile {
    NSString * anotherProp;
}

- (id) init...

なぜこの方法で作られているのですか?anotherProp が MyFile.h ファイルに宣言されていないのはなぜですか?

前もって感謝します

4

1 に答える 1

5

まあそれはこのように宣言されていませんが、このように宣言されています:-

@interface ClassName() {

    Declarations;

}

Methods;

@end

これらはクラス拡張と呼ばれます。これらはカテゴリに似ていますが、他のクラスではなく、クラスの実装でのみ宣言できます。拡張の使用は、パブリックまたは読み取り/書き込みのプロパティを再宣言し、必要に応じて新しいプロパティも宣言することです。 @interface以外の場所でプロパティと変数を宣言できるようにするだけで、名前はextensiosになります。

メソッドをパブリックにし、クラスのデータ隠蔽機能が補正されるため、カテゴリの問題に取り組むために導入されましたが、クラス拡張は、宣言されたメソッドがクラスの多くのパブリックプライマリで宣言されたメソッドと同じ要件を持つクラスのプライマリインターフェイスを効果的に拡張しますインターフェース。

于 2012-05-18T06:52:58.940 に答える