为什么@synthetize必须手动添加?

问题描述:

当我申报@property时,很明显我想稍后使用它。由于某些原因,声明@property是不够的,我必须告诉编译器@synthetize它在每个.m文件中。因此,我的项目中的每个.m文件都以@synthetize开头。为什么@synthetize必须手动添加?

为什么他们没有用C#的方式做到这一点,只要声明足够了,编译器就可以完成剩下的工作?

+0

AppCode可以做到这一点。 Xcode不能默认。 – beryllium 2012-04-01 20:17:24

+0

你是指JetBrains的IDE吗? – 2012-04-01 20:19:45

+0

是的,我愿意。 (还有一些角色可以在评论中达到15个符号:) – beryllium 2012-04-01 20:23:41

通过使@synthesize成为可选项,您可以自由地以您选择的任何方式实现您的getter和setter方法。

您可以在Apple的Declared Properties文档中找到更多信息,尤其是标题为“属性实现指令”的部分。

+1

虽然明智地实现了getter和/或setter,或者指定了“@ dynamic”,但是不能将@ @ synthesize作为默认值。 – yuji 2012-04-01 20:23:01

+0

IIRC如果您使用'@ synthesize'并仍然实现getter和/或setter,则将使用您实现的那个。这对于合成一个吸气器并提供一个自定义设置器很有用。但是它并没有帮助解释为什么'@ synthesize'必须一直手动写入;) – Taum 2012-04-01 20:23:14

+0

是的,是什么原因不选择@synthetize的默认实现可以被用户覆盖? – 2012-04-01 20:48:18

您几乎可以免费获得标准Accessors,并且可以根据需要推出自己的Getters/Setter。