在实现中属性语法样式_suit和suit有什么区别(例如)?

时间:2013-03-10 02:42:14

标签: objective-c

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

(我知道我们不再使用合成,除非我们覆盖了setter AND getter,但仅仅是为了示例)

@synthesize suit, rank;

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

@synthesize suit = _suit;

@synthesize rank = _rank;

它让我感到困惑。 _rank是要将对象设置为某个值而rank是要获取它吗?

如果是,那么行:@synthesize rank = _rank;会让我感到困惑......

很想得到一些方向。 TNX

1 个答案:

答案 0 :(得分:4)

  

@synthesize rank = _rank;

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

  

@synthesize rank;

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

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