在我的iPhone应用程序中,我经常在xCode v3.2.3中执行此操作:
我不小心忘了做#1 ......但它仍然很好。 0警告。 0错误。 0分析仪错误。
怎么会这样?我的代码不应该在尝试使用变量的任何地方加载编译器错误吗?
答案 0 :(得分:5)
这是新运行时的一个功能。有关详细信息,请参阅this question。
答案 1 :(得分:2)
实例变量(ivars)的自动合成是OS X上的Objective-C 2.0运行时和新的iOS Objective-C运行时的一个特性。 @synthesize指令将在运行时自动创建必要的ivar,除非您自己声明了它。这是通过Objective-C 2.0的非脆弱的ivar支持实现的。因此,没有错误,你不应该收到它们。
最终,您不必在类的接口中声明ivars是一件好事。它们(可能)是特定于实现的细节,您不希望这些细节作为类的公共接口的一部分可见。请注意,使用类别类别,您也可以自动为“私有”属性合成ivars。