目标c合成性质ivar

时间:2012-06-21 15:16:08

标签: objective-c

  

可能重复:
  How does an underscore in front of a variable in a cocoa objective-c class work?
  Prefixing property names with an underscore in Objective C

当我们声明一个属性然后像这样合成它时,例如: @synthesize name = _name; 因此,_name是我们将在以下实现中使用的name属性的实例变量。 我的问题是为什么我们需要这个ivar,如果我没有创建_name ivar会发生什么? 谢谢。

1 个答案:

答案 0 :(得分:0)

我的理解是有一个默认的ivar名称,它与属性名称相同。使用下划线指定自己的原因之一是消除setter中的歧义:

-(void) setFoo:(id) foo {
  // here, foo should ONLY refer to the passed-in var
  // If your ivar is the same, it is ambiguous.
  // If your ivar is _foo, then there is clarity.
}