为什么@synthetize必须手动添加?
当我申报@property
时,很明显我想稍后使用它。由于某些原因,声明@property
是不够的,我必须告诉编译器@synthetize
它在每个.m
文件中。因此,我的项目中的每个.m
文件都以@synthetize
开头。为什么@synthetize必须手动添加?
为什么他们没有用C#的方式做到这一点,只要声明足够了,编译器就可以完成剩下的工作?
通过使@synthesize
成为可选项,您可以自由地以您选择的任何方式实现您的getter和setter方法。
您可以在Apple的Declared Properties文档中找到更多信息,尤其是标题为“属性实现指令”的部分。
虽然明智地实现了getter和/或setter,或者指定了“@ dynamic”,但是不能将@ @ synthesize作为默认值。 – yuji 2012-04-01 20:23:01
IIRC如果您使用'@ synthesize'并仍然实现getter和/或setter,则将使用您实现的那个。这对于合成一个吸气器并提供一个自定义设置器很有用。但是它并没有帮助解释为什么'@ synthesize'必须一直手动写入;) – Taum 2012-04-01 20:23:14
是的,是什么原因不选择@synthetize的默认实现可以被用户覆盖? – 2012-04-01 20:48:18
您几乎可以免费获得标准Accessors,并且可以根据需要推出自己的Getters/Setter。
AppCode可以做到这一点。 Xcode不能默认。 – beryllium 2012-04-01 20:17:24
你是指JetBrains的IDE吗? – 2012-04-01 20:19:45
是的,我愿意。 (还有一些角色可以在评论中达到15个符号:) – beryllium 2012-04-01 20:23:41