目标C – 合成属性

可能重复:
在Objective C中用下划线前缀属性名称

当综合属性,我发现有人在做:

@synthesize myVar = _myVar; 

什么是“_myVar”,简单的做法与之不同:

 @synthesize myVar; 

最后,当我更喜欢第一个解决scheme的最后一个?

谢谢卢卡

在你的例子中,真正的_myVar是支持你财产的伊娃的名字。 默认情况下,当你合成一个属性时,为你创build一个同名的伊娃。 所以,你可以通过setter / getter或_myVar来使用你的属性来设置你的ivar直接访问你的variables(当然绕过KVC / KVO)。

编辑:从苹果的cocoa编码指南

…在很多情况下,当你使用一个声明的属性时,你也可以合成一个对应的实例variables。

确保实例variables的名称简洁地描述存储的属性。 通常,您不应该直接访问实例variables,而应该使用访问器方法(您可以直接在init和dealloc方法中访问实例variables)。 为了帮助发出信号,使用下划线(_)前缀实例variables名称…

如果你想在setter和getter中使用一些现有的数据成员,那么可以像这样指定它。

例如@synthesize personName = pName;

通过这个我们可以根据我们的方便使用pName而不是personName。

它是私有variables的名称。

在另一个post上回答我的答案: 答案