Objective-Cの場合、次のヘッダー ファイルで:
@interface Peg : NSObject {
char color;
}
@property char color;
メンバー変数がすでにchar型であると言われているのに、なぜ@property
それを繰り返さなければならないのだろうか? (そうしないと、コンパイルされません)。コンパイラはそれがcharであることを認識できませんでしたか? それ以外にはありえませんよね?
Objective-Cの場合、次のヘッダー ファイルで:
@interface Peg : NSObject {
char color;
}
@property char color;
メンバー変数がすでにchar型であると言われているのに、なぜ@property
それを繰り返さなければならないのだろうか? (そうしないと、コンパイルされません)。コンパイラはそれがcharであることを認識できませんでしたか? それ以外にはありえませんよね?
これは、一般的なプロパティがクラスの宣言されたインスタンス変数に関連付けられている必要がないためです。プロパティがあり、変数をクラス ヘッダーに含めない場合があります。そのため、型を宣言する必要があります。
変数の代わりにプロパティを使用すると、ヘッダーがきれいになり、実装が隠されます。
したがって、プロパティを宣言して@synthesize
から
@interface Peg : NSObject
@property char color;
@implementation Peg
@synthesize color;
@end
実際、少なくともclangを使用してx64用にコンパイルする場合は、もはや必要ありません。インスタンス変数を省略した場合、@synthesize
によって作成されます。
以下を使用するだけです
@interface Peg : NSObject {}
@property char color;