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
我对这个功能很感兴趣。它是如何工作的?我试过删除
它确实有效,请确保在项目和目标设置中,编译器设置为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。