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

ann*_*nna 8 xcode cocoa compiler-errors 32bit-64bit

我正在开发我的第一个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.

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

小智 21

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

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

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

  • 合成属性仍然必须由现代运行时中的实例变量支持; 区别在于编译器会为您创建_create_,而在编译旧的32位版本时,必须显式声明ivars. (7认同)