构建32位OS X应用程序时出错?

时间:2011-08-18 15:46:03

标签: cocoa compiler-errors 32bit-64bit xcode

我正在开发我的第一个Mac OS X应用程序。我的项目是使用XCode默认设置的,我没有触及任何Build Settings。为Mac 64位构建时,该应用程序运行正常。但是,当为Mac 32位构建时,我得到了一个看似随意的错误:

Semantic issue: Synthesized property 'myProperty' must either be named the same as a compatible ivar or must explicitly name an ivar.

我可以检查什么样的东西?

2 个答案:

答案 0 :(得分:21)

听起来你发现了这个错误,但我想我可以回答你的问题以防其他人后来发现错误。

Apple在64位Objective-C运行时做了很多改动,以前他们无法做到这一点,因为它会打破二进制兼容性。其中一个不同的是,在32位运行时,合成属性必须由实例变量支持。在64位运行时合成属性sill需要,但它们是自动为您创建的。默认情况下,实例变量的名称应与属性的名称相同。

因此,如果您需要支持32位,请确保为所有属性创建实例变量。如果你只支持64位,那么你仍然可以这样做,这样你的代码可以同时为32位和64位构建,但你不需要。

答案 1 :(得分:0)

您可以在Xcode中为32位构建目标设置 NS_BUILD_32_LIKE_64 预处理器宏。这样可以省去为32位和64位版本维护单独代码的麻烦。