防止@property的自动ivar合成

时间:2014-07-08 14:40:13

标签: objective-c properties instance-variables synthesize

我有readonly属性,我想声明与其他属性类似:

@property (nonatomic, readonly) MyThing *thing;

通常,我绝对想要为这些属性自动合成实例变量和getter方法。在这种情况下,如果我忘记为它们编写一个显式的getter,我就会出错,我希望编译器告诉我并拒绝编译(或者至少发出警告)。

在这种情况下,使用@property声明是不好的做法?我应该改用:

-(MyThing*) myThing;

或者,也就是说,我可以通过某种方式告诉属性列表@property中的(nonatomic, readonly, dont_synthesize_this_one_please),我绝对不希望实例变量被合成化,而且它是如果我错过了吸气剂会出错?

1 个答案:

答案 0 :(得分:1)

不,没有特殊属性。如果你没有覆盖吸气剂,那么将合成ivar。

按照您的建议使属性成为常规方法是最佳解决方案。 您还可以尝试打开以下编译器警告:

Implicit Synthesized Properties

但随后您将收到所有合成属性的警告。

您也可以单独为每个文件启用-Wobjc-missing-property-synthesis