4

我正在浏览 Xcode 4.4 的发行说明并注意到这一点:

LLVM 4.0 编译器

Xcode 现在包括 Apple LLVM Compiler 4.0 版,包括以下新的Objective-C 语言功能:

  • 默认@synthesize:未实现时自动合成一个@property

我对这个功能很感兴趣。它是如何工作的?我试过删了@synthesize,还是不行。

4

2 回答 2

7

它确实有效,请确保在您的项目和目标设置中,编译器设置为 LLVM 4.0。然后,当您删除 @synthesize 行时,您可以通过两种方式访问​​它:

通过带有 self.myProperty 的访问器或通过带有 _myProperty 的相应实例变量(是的,下划线是自动添加的)。

于 2012-07-26T13:59:40.467 回答
1

在很多情况下它根本不起作用。这些都在这里列出为例外:

http://useyourloaf.com/blog/2012/08/01/property-synthesis-with-xcode-4-dot-4.html

但对我来说最重要的一个叫做

具有非默认 Getter 和 Setter 的读写属性

这意味着,除非您的属性只是面向公众的 ivars,否则您需要包含 @synthesize。或者换一种说法,如果你很好地使用了封装并填充了那些 setter 和 getter,你就不能使用它。

稍后注意:我不确定此处指定的条件,但我发现对于我遇到的几乎所有情况都有一个自动合成的 ivar。

于 2012-08-15T20:31:11.370 回答