对于Objective-C的,在下面的头文件:在Objective-C中,为什么变量的类型必须为@property重复?
@interface Peg : NSObject {
char color;
}
@property char color;
不知成员变量已经被说成是一个字符类型,那么为何@property
有重复吗? (否则它不会编译)。编译器不能说明它是char?它不可能是别的,可以吗?
对于Objective-C的,在下面的头文件:在Objective-C中,为什么变量的类型必须为@property重复?
@interface Peg : NSObject {
char color;
}
@property char color;
不知成员变量已经被说成是一个字符类型,那么为何@property
有重复吗? (否则它不会编译)。编译器不能说明它是char?它不可能是别的,可以吗?
这是因为一般属性不必与您的类的任何已声明的实例变量相关。您可能拥有一个属性,并且不在您的课程标题中包含变量。这就是为什么你必须声明它的类型。
使用属性而不是变量使您的标题变得干净,隐藏了实现。
所以,你可以声明一个属性,然后@synthesize
它
@interface Peg : NSObject
@property char color;
@implementation Peg
@synthesize color;
@end
只需使用以下
@interface Peg : NSObject {}
@property char color;
事实上,它不再是需要的,铿锵的x64至少在编译时。如果您省略实例变量,则@synthesize
将为您创建一个实例变量。
这是否意味着一般情况下它更简洁,省略实例变量?离开或不离开,仍然有一个“颜色”属性使用? – 2012-04-14 09:10:43
是的,把它扔掉 – 2012-04-14 09:11:47
你也可以省略大括号。 '@interface Peg:NSObject @property char color;'等等。 – 2012-04-14 17:54:51