0

次のような別のインターフェイス宣言が表示されることがあります。

@interface MyCode ()

@end

これは.hファイルのものと重複していませんか?

4

6 に答える 6

5

これはXcodeによって提供されるカテゴリであり、この実装ファイル内からのみ使用できるプライベートプロパティとメソッドを宣言するために使用されます。

クラスのすべてのメソッドを常に外部に公開する必要はありません。代わりに、このプライベートカテゴリでそれらを宣言します(これらのプライベートメソッドの前にアンダースコア(_)を付けて、呼び出していることを明確にします。プライベートメソッドですが、それは完全にオプションです)。

例として、これは私が公開したくないプライベートな初期化メソッドです。

@interface MyClass ()

- (BOOL)_init;

@end

@implementation MyClass

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self != nil)
    {
        if (![self _init])
            self = nil;
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)coder
{
    self = [super initWithCoder:code];
    if (self != nil)
    {
        if (![self _init])
            self = nil;
    }
    return self;
}

- (BOOL)_init
{
     self.something = whatnot;
     self.thingA = self.thingB;
     return YES;
}
于 2013-02-26T16:36:46.750 に答える
1

プライベートivars/property/methodsを宣言するときに使用されます。

于 2013-02-26T16:36:26.423 に答える
0

.hファイルにはパブリックメソッドとプロパティがあり、.mファイルにはプライベートがあります。

于 2013-02-26T16:36:53.943 に答える
0

概念は、.hをクラスのパブリックインターフェイスに制限し、プライベート実装の詳細をこのクラス拡張に配置すると、プロジェクトをよりクリーンにすることができるということです。「 Objective-Cを使用したプログラミング」ガイドのプライベートクラス拡張の説明を参照してください。

于 2013-02-26T16:37:20.380 に答える
0

この@Interfaceを使用すると、プライベートivar、プロパティ、およびメソッドを宣言できます。したがって、ここで宣言したものには、このクラスの外部からアクセスすることはできません。一般に、クラスのインスタンスがそれらにアクセスする必要がない限り、すべてのivar、プロパティ、およびメソッドをデフォルトでプライベートとして宣言する必要があります(この@interface()で)。

お役に立てれば

于 2013-02-26T16:38:08.327 に答える
0

これはクラス拡張です。続きを読む

通常、プライベートivars/properties/methodsの宣言に使用されます。

于 2013-02-26T16:38:12.267 に答える