2

一个实例在我的iPhone应用程序编译时,我经常这样做在Xcode V3.2.3:应该得到20个错误......但得到0 ...不声明变量

  1. 在声明一个布尔变量* .h文件
  2. 在同一个* .h文件中使用@property。
  3. 在匹配的* .m文件中使用@sythesize。

我不小心忘了做#1 ......但它仍然很好。 0警告。 0错误。 0分析仪错误。

这怎么可能?我的代码不应该加载与编译器错误无处不在变量正试图使用​​?

回答

5

这是新运行时的一项功能。有关更多详细信息,请参阅this question

+0

感谢您的快速回复。有没有办法让我为这些类型的问题强行发出警告/错误? (我想看看他们。) – Annette 2010-07-12 18:08:53

+2

你为什么想看到他们?编译器正在为您创建它们。 – 2010-07-12 18:13:13

+0

@Annette - 正如Jeff所说,不需要警告,因为在现代运行时中没有为属性声明实例变量没有任何问题。 – 2010-07-13 02:16:21

2

实例变量(ivars)的自动合成是OS X上的Objective-C 2.0运行时和新的iOS Objective-C运行时的一项功能。 @synthesize指令将在运行时自动创建必要的ivar,除非您自己声明了它。 Objective-C 2.0的非易碎伊娃支持使这成为可能。因此,没有错误,你不应该接收它们。

最终,您不必在类的接口中声明ivars是件好事。它们(可能)是特定于实现的细节,您不希望它们作为该类的公共接口的一部分显示。请注意,使用类别类别也可以自动综合ivars以获得“私人”属性。