【发布时间】:2012-05-15 14:59:31
【问题描述】:
我一直在“调试 X86-64”模式 (Xcode 3.6) 下构建我的程序,并且一切正常。但是,我只是尝试切换到“Release X86-64”模式,并且在编译时收到我的每个属性的以下错误:
Synthesized property 'x' must either be named the same as a compatible ivar or must
explicitly name an ivar.
其中“x”是我的属性之一,第一个是“公司”(我收到了 51 个此类错误。)。在我的 .h 接口文件中,我以这种方式列出了这些项目:
@property (copy) NSString *company,
*address1,
*address2,
*city,
*usState,
*zip,
*phone,
*fax,
*email,
*web; // etc, etc.
在我的 .M 实现文件中,我将它们合成为:
@synthesize company,
address1,
address2,
city,
usState,
zip,
phone,
fax,
email,
web; // etc, etc.
我的理解是实例变量是为这些属性自动创建的......事实上,它们似乎工作得很好,直到我尝试在“发布”模式下编译。
我在书中找不到任何我必须解释的内容。我做错了什么,或者更具体地说,我应该为“发布”编译修复这个问题吗?
谢谢!
【问题讨论】:
-
好的,所以我刚刚找到了另一个似乎为主题增添了更多亮点的线程:stackoverflow.com/questions/7110245/… 我突然想到,虽然我有一台 64 位机器,但我正在运行 OS 10.6。 8……这和它有关系吗?编译器会尝试在 32 位模式下编译吗?
-
我可能在这方面做得更好,但我怀疑我知道如何解决它,尽管我需要一些确认。我找到了这个线程:stackoverflow.com/questions/10043624/…,我肯定没有在接口部分声明实例变量,目前看起来像这样:@interface DBContactRecord : NSObject
{ } 我将尝试下一个,但如果有人可以确认,这将是最有帮助的:) -
您的 Xcode 项目的构建设置将告诉您是构建 32 位 (i386) 还是 64 (x86_64)。顺便说一句,没有“Xcode 3.6”之类的东西。
-
深夜错字...我正在运行 Xcode 版本 3.2.6 :)
标签: cocoa compiler-construction properties ivar synthesize