在Objective-C中,为什么必须为@property重复变量的类型?

nop*_*ole 1 properties objective-c

对于Objective-C,在以下头文件中:

@interface Peg : NSObject {
    char color;
}

@property char color;
Run Code Online (Sandbox Code Playgroud)

我想知道成员变量是否已经被称为char类型,那为什么@property必须重复它?(否则它不会编译).编译器不能告诉它是char吗?它不可能是其他任何东西,不是吗?

Nik*_*rov 7

这是因为通常属性不必与类的任何声明的实例变量相关.您可能拥有一个属性,但不在您的类标题中包含变量.这就是你必须声明它的类型的原因.

使用属性而不是变量使得标头清洁,隐藏实现.

所以,你可以声明一个属性然后@synthesize

@interface Peg : NSObject

@property char color;


@implementation Peg

@synthesize color;

@end
Run Code Online (Sandbox Code Playgroud)

  • 是的,扔掉它 (2认同)