-1

可能重复:
可可objective-c 类中变量前面的下划线如何工作?

我现在经常看到这样的声明:

@property SomeClass* foo;

@synthesize foo=_foo;

大多数示例也使用 ARC,但我不确定它是否与此相关。我有一种感觉,我错过了一些明显的东西,但不能把我的手指放在它上面。

任何的想法?

4

1 回答 1

1

它没有连接到 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 中提供了一些额外的特性,但这就是它的要点。

于 2012-09-07T05:52:40.753 回答