有时我们可以在synthesize
语句中明确指定实例变量的名称,例如,
在SomeViewController.h
,
//....
@property (nonatomic, retain) NSObject *variable;
//....
在SomeViewController.m
,
//....
@synthesize variable = _variable;
//....
但是,如果将实例变量隐式命名为_variable
,即使我们只是将其设为:
@synthesize variable;
<{1>}中的。
任何人都可以分享为什么有必要吗?谢谢:D
答案 0 :(得分:8)
为避免混淆(请参阅评论):不需要使用= _variable
的{{1}}部分,也不再需要@synthesize
本身。
只有在要将属性链接到特定实例变量时,才会尝试此操作。对于早期的Objective-C版本,该部分语句需要将名称设置为与属性名称不同的名称,因此当您要调用iVar @synthesize
和属性_variable
时。默认值为variable
(与您的问题不同)。没有variable
ivar和属性具有相同的名称。
= something
会使程序员更清楚地知道他/她是直接访问ivar还是通过访问器方法。有时这非常重要,特别是在不使用ARC时。因此,它有助于避免错误。
但是,使用当前的Objective-C,您可以省略_
语句,并在这种情况下使用默认值。在您的示例中,默认自动合成的实例@synthesize
名称将具有前导variable
,因此_
。