可能重复:
How does an underscore in front of a variable in a cocoa objective-c class work?
我现在经常看到这样的声明:
@property SomeClass* foo;
@synthesize foo=_foo;
大多数示例也使用ARC,但我不确定它是否与此相关。 我觉得我错过了一些明显的东西,但我不能把手指放在它上面。
有什么想法吗?
答案 0 :(得分:1)
它未连接到ARC。 @property关键字是一个用于向编译器(以及类用户)指示将为该“属性”提供getter和setter方法的功能。在这种情况下,期望存在称为“foo”的getter方法和称为“setFoo”的setter方法。 @synthesize关键字告诉编译器合成一个通用的getter和setter方法,而不是你提供自己的方法。 @synthesize foo = _foo告诉编译器将这些泛型方法与一个名为“_foo”的后备实例变量合成。此_propertyName表示法是许多客观c开发人员使用的样式选择。基本结果是你得到这段代码:
- (SomeClass *)foo
{
return _foo;
}
- (void)setFoo:(SomeClass *)value
{
_foo = value;
}
编译器可能在合成的getter和setter中提供了一些额外的功能,但这就是它的要点。