可能重复:
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会发生什么? 谢谢。
答案 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.
}