关于C#:新的Apple LLVM 4.0“默认合成”功能如何运作?

How does the new Apple LLVM 4.0 “default synthesize” feature operate?

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

LLVM 4.0 Compiler

Xcode now includes the Apple LLVM Compiler version 4.0, including the following newObjective-C language features:

  • Default @synthesize: automatically synthesizes an @property when unimplemented

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


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

通过self.myproperty的访问器或通过相应的实例变量和myproperty(是的,自动添加底线)。


在很多情况下,它根本不起作用。以下均为例外情况:

HTTP://USEYURLAFA.COM/BLG/2012/08/01/1属性合成-XCODE-4-DOT-4.HTML

但对我来说最重要的是

具有非默认getter和setter的readwrite属性

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

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