我刚刚更新了一个项目以使用带有 Xcode 4.2 内置转换工具的 ARC。不幸的是,出现了一个奇怪的错误,我不明白,也没有找到任何相关信息。我有一个带有属性声明的文档类:
@property (weak) IBOutlet WebView *webView;
在实现文件中,我有一个 @synthesize 语句:
@synthesize webView=_webView;
当我尝试编译它时,它失败并告诉我:
错误:'weak' 属性的 @synthesize 只允许在 ARC 或 GC 模式下使用
当然,该项目被标记为使用 ARC 编译。我非常感谢任何帮助以了解我做错了什么以及为什么。
编辑:昨天迟到了。所以这里有一个更完整的编译日志:
[...] -fobjc-arc -Wno-trigraphs -fpascal-strings -O0 -Wmissing-prototypes -Wreturn-type -W括号 -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wshorten-64- to-32 -DDEBUG=1 -isysroot /Developer/SDKs/MacOSX10.7.sdk -fasm-blocks -mmacosx-version-min=10.7 -gdwarf-2 -Wno-sign-conversion "-DIBOutlet=属性((iboutlet) )" "-DIBOutletCollection(ClassName)=属性((iboutletcollection(ClassName)))" "-DIBAction=void)属性((ibaction)" -iquote [...]/Build/Intermediates/[...].build/Debug/[...].build/[...]-generated-files.hmap -I[. ..]/Build/Intermediates/[...].build/Debug/[...].build/[...]-own-target-headers.hmap -I[...]/Build/Intermediates /[...].build/Debug/[...].build/[...]-all-target-headers.hmap -iquote [...]/Build/Intermediates/[...]。 build/Debug/[...].build/[...]-project-headers.hmap -I[...]/Build/Products/Debug/include -I[...]/Build/Intermediates/ [...].build/Debug/[...].build/DerivedSources/x86_64 -I[...]/Build/Intermediates/[...].build/Debug/[...].build /DerivedSources -F[...]/Build/Products/Debug -fno-objc-arc [...]
ARC 的编译器设置似乎在开始时打开,然后在参数列表中再次关闭。老实说:我不知道在哪里删除这些奇怪的设置以及它是如何出现的。我现在想出的唯一解决方案是从一个空白的新项目重新开始整个项目,然后从头开始导入所有类文件。
如果有人知道更简单的方法,我将不胜感激。
PS:我确实将所有关于 ARC 的构建设置都设置为 YES。