在我阅读的目标c书中,作者总是在实现中使用属性对象,如:
(我知道我们不再使用合成,除非我们覆盖了setter AND getter,但仅仅是为了示例)
@synthesize suit, rank;
在stanford课程中,如果他需要使用@synthesize,他会这样做:
@synthesize suit = _suit;
@synthesize rank = _rank;
它让我感到困惑。 _rank
是要将对象设置为某个值而rank
是要获取它吗?
如果是,那么行:@synthesize rank = _rank;
会让我感到困惑......
很想得到一些方向。 TNX
答案 0 :(得分:4)
@synthesize rank = _rank;
这指示编译器根据需要生成setter和/或getter,使用名为_rank
的ivar作为后备实例变量。如果需要,它将创建ivar _rank
。 [编辑],意思是它还不存在。[/ edit]
@synthesize rank;
这指示编译器根据需要使用名为rank
的ivar(与属性本身同名)生成setter和/或getter
然后使用LLVM4,如果您没有明确要求编译器@synthesize @property,并且您依赖编译器默认为您执行此操作,那么它将创建一个名为_rank
的ivar默认情况下。