2

在我的 iPhone 应用程序中,我经常在 xCode v3.2.3 中执行此操作:

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

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

这个怎么可能?我的代码不应该在尝试使用该变量的任何地方都加载编译器错误吗?

4

2 回答 2

5

这是新运行时的一个特性。有关更多详细信息,请参阅此问题

于 2010-07-12T17:55:51.067 回答
2

实例变量 (ivars) 的自动合成是 OS X 上的 Objective-C 2.0 运行时和新的 iOS Objective-C 运行时的一个特性。@synthesize 指令将在运行时自动创建必要的 ivar,除非您自己声明了它。这可以通过 Objective-C 2.0 的非脆弱 ivar 支持来实现。因此,没有错误,您不应该收到它们。

最终,不必在类的接口中声明 ivars 是一件好事。它们(可能)是特定于实现的细节,您不希望在类的公共接口中看到这些细节。请注意,使用类类别,您还可以自动为“私有”属性合成 ivars。

于 2010-07-12T18:16:03.697 回答