对于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;