关于在Objective C中命名实例变量

时间:2013-06-10 08:32:44

标签: objective-c

有时我们可以在synthesize语句中明确指定实例变量的名称,例如,

SomeViewController.h

//....
@property (nonatomic, retain) NSObject *variable;
//....

SomeViewController.m

//....
@synthesize variable = _variable;
//....

但是,如果将实例变量隐式命名为_variable,即使我们只是将其设为:

,为什么还要付出额外的努力?
@synthesize variable;
<{1>}中的

任何人都可以分享为什么有必要吗?谢谢:D

1 个答案:

答案 0 :(得分:8)

为避免混淆(请参阅评论):不需要使用= _variable的{​​{1}}部分,也不再需要@synthesize本身。

只有在要将属性链接到特定实例变量时,才会尝试此操作。对于早期的Objective-C版本,该部分语句需要将名称设置为与属性名称不同的名称,因此当您要调用iVar @synthesize和属性_variable时。默认值为variable(与您的问题不同)。没有variable ivar和属性具有相同的名称。

顺便说一下,两者使用相同的名称没有错。但是具有不同的名称,领先的= something会使程序员更清楚地知道他/她是直接访问ivar还是通过访问器方法。有时这非常重要,特别是在不使用ARC时。因此,它有助于避免错误。

但是,使用当前的Objective-C,您可以省略_语句,并在这种情况下使用默认值。在您的示例中,默认自动合成的实例@synthesize名称将具有前导variable,因此_