我现在经常看到这样的声明:
@property SomeClass* foo;
@synthesize foo=_foo;
大多数示例也使用 ARC,但我不确定它是否与此相关。我有一种感觉,我错过了一些明显的东西,但不能把我的手指放在它上面。
任何的想法?
我现在经常看到这样的声明:
@property SomeClass* foo;
@synthesize foo=_foo;
大多数示例也使用 ARC,但我不确定它是否与此相关。我有一种感觉,我错过了一些明显的东西,但不能把我的手指放在它上面。
任何的想法?
它没有连接到 ARC。@property 关键字是用于向编译器(和类用户)指示该“属性”将存在 getter 和 setter 方法的功能。在这种情况下,期望会有一个名为“foo”的getter 方法和一个名为“setFoo”的setter 方法。@synthesize 关键字告诉编译器合成一个通用的 getter 和 setter 方法,而不是你自己提供。@synthesize foo=_foo 告诉编译器将这些泛型方法与名为“_foo”的支持实例变量合成。这个 _propertyName 表示法是许多 Objective C 开发人员使用的风格选择。基本结果是您得到以下代码:
- (SomeClass *)foo
{
return _foo;
}
- (void)setFoo:(SomeClass *)value
{
_foo = value;
}
编译器可能在合成的 getter 和 setter 中提供了一些额外的特性,但这就是它的要点。