1

Objective-Cの場合、次のヘッダー ファイルで:

@interface Peg : NSObject {
    char color;
}

@property char color;

メンバー変数がすでにchar型であると言われているのに、なぜ@propertyそれを繰り返さなければならないのだろうか? (そうしないと、コンパイルされません)。コンパイラはそれがcharであることを認識できませんでしたか? それ以外にはありえませんよね?

4

3 に答える 3

7

これは、一般的なプロパティがクラスの宣言されたインスタンス変数に関連付けられている必要がないためです。プロパティがあり、変数をクラス ヘッダーに含めない場合があります。そのため、型を宣言する必要があります。

変数の代わりにプロパティを使用すると、ヘッダーがきれいになり、実装が隠されます。

したがって、プロパティを宣言して@synthesizeから

@interface Peg : NSObject

@property char color;


@implementation Peg

@synthesize color;

@end
于 2012-04-14T09:08:55.087 に答える
2

実際、少なくともclangを使用してx64用にコンパイルする場合は、もはや必要ありません。インスタンス変数を省略した場合、@synthesizeによって作成されます。

于 2012-04-14T09:14:44.883 に答える
1

以下を使用するだけです

@interface Peg : NSObject {}

@property char color;
于 2012-04-14T09:14:25.690 に答える