Cocoa 生成32位OS X应用程序时出错?

Cocoa 生成32位OS X应用程序时出错?,cocoa,compiler-errors,32bit-64bit,xcode,Cocoa,Compiler Errors,32bit 64bit,Xcode,我正在开发我的第一个Mac OS X应用程序。我的项目是用XCode默认设置的,我没有接触任何构建设置。在为Mac 64位构建应用程序时,该应用程序运行良好。然而,在为Mac 32位构建时,我得到了一个看似任意的错误,它说: 语义问题:合成属性“myProperty”的名称必须与兼容ivar的名称相同,或者必须显式命名ivar。 我可以检查哪些内容?听起来您已经发现了错误,但我想我可以回答您的问题,以防以后有人发现 苹果在64位Objective-C运行时中做了很多改变,这是他们以前无法做到的,

我正在开发我的第一个Mac OS X应用程序。我的项目是用XCode默认设置的,我没有接触任何构建设置。在为Mac 64位构建应用程序时,该应用程序运行良好。然而,在为Mac 32位构建时,我得到了一个看似任意的错误,它说:

语义问题:合成属性“myProperty”的名称必须与兼容ivar的名称相同,或者必须显式命名ivar。


我可以检查哪些内容?

听起来您已经发现了错误,但我想我可以回答您的问题,以防以后有人发现

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


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

您可以在Xcode中为32位生成目标设置NS\u BUILD\u 32\u LIKE\u 64预处理器宏。这将省去为32位和64位版本维护单独代码的麻烦。

让我们看看包含属性和实例变量声明的头文件-错误消息非常准确,我现在觉得很傻。我已经看过这些文件很多次了,甚至是在不同的一天。现在你要求再看一遍,我发现了一个打字错误!哇,谢谢。在现代运行时,合成属性仍然必须由实例变量支持;不同之处在于编译器将为您创建它们,而在为较旧的32位版本编译时,必须显式声明IVAR。谢谢您的回答,这节省了我的时间:)