Objective C - 合成属性

时间:2012-05-18 11:10:51

标签: objective-c properties

  

可能重复:
  Prefixing property names with an underscore in Objective C

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

@synthesize myVar = _myVar;

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

@synthesize myVar;        

最后,当我更喜欢第一个解决方案到最后一个?

由于 卢卡

3 个答案:

答案 0 :(得分:2)

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

修改 来自Apple的Coding Guidelines for Cocoa

  

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

     

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

作为前缀实例变量名

答案 1 :(得分:-1)

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

e.g。 @synthesize personName = pName;

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

答案 2 :(得分:-1)

它是私有变量的名称。

在另一篇文章中回答我的回答:answer