0

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

在合成属性时,我发现有人在做:

@synthesize myVar = _myVar;

什么是“_myVar”,这与简单地做的区别是:

@synthesize myVar;        

最后,什么时候我应该更喜欢第一个解决方案而不是最后一个解决方案?

谢谢卢卡

4

3 回答 3

2

_myVar的示例中真正的内容是支持您的财产的 ivar 的名称。默认情况下,当您合成一个属性时,会为您创建一个同名的 ivar。因此,您可以使用您的属性通过 setter/getter 设置您的 ivar,或者_myVar直接访问您的变量(当然绕过 KVC/KVO)。

编辑: 来自 Apple 的Cocoa 编码指南

...在许多情况下,当您使用声明的属性时,您还会合成相应的实例变量。

确保实例变量的名称简洁地描述了存储的属性。通常,您不应直接访问实例变量,而应使用访问器方法(您确实在 init 和 dealloc 方法中直接访问实例变量)。为了帮助表明这一点,请在实例变量名称前加上下划线 (_)...

于 2012-05-18T11:31:03.867 回答
-1

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

例如@synthesize personName=pName;

这样,我们可以根据我们的方便使用 pName 而不是 personName。

于 2012-05-18T11:24:04.207 回答
-1

它是私有变量的名称。

在另一篇文章中查看我的答案:回答

于 2012-05-18T11:39:23.917 回答