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 回答