-2

在我读到的目标 c 书中,作者总是在实现中使用属性对象,例如:

(我知道我们不再使用 synthesize,除非我们覆盖 setter 和 getter,但仅用于示例)

@synthesize suit, rank;

在斯坦福课程中,如果他需要使用@synthesize,他会这样做:

@synthesize suit = _suit;

@synthesize rank = _rank;

它让我有点困惑。是在_rank获取对象时将对象设置为某个值rank吗?

如果是的话,那么这条线:@synthesize rank = _rank;让我有点困惑......

很想得到一些方向。tnx

4

1 回答 1

4

@synthesize rank = _rank;

_rank这指示编译器根据需要使用称为支持实例变量的 ivar 生成 setter 和/或 getter 。_rank如果需要,它将创建 ivar 。[编辑],意思是如果它不存在。[/编辑]

@synthesize rank;

rank这指示编译器根据需要使用名为(与属性本身同名)的 ivar 生成 setter 和/或 getter

然后使用 LLVM4,如果您没有明确要求编译器 @synthesize 一个 @property,并且您默认依赖编译器为您执行此操作,那么它将创建一个_rank默认调用的 ivar。

于 2013-03-10T02:51:31.000 回答