4

我在使用 CLANG 构建代码时遇到了这个错误:

在 /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.h:31 包含的文件中,
                 来自 /Users/waspfish/Documents/NanaimoStudio/Projects/iPhoneMonk/Projects/IdeaOrganizer/IdeaOrganizer_Prefix.pch:13,
                 从:1:
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILocalizedIndexedCollat​​ion.h:13:错误:'AT_NAME'标记之前的语法错误
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILocalizedIndexedCollat​​ion.h:21:错误:'}'标记之前的语法错误
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILocalizedIndexedCollat​​ion.h:23:致命错误:方法定义不在@implementation上下文中
编译终止。
{标准输入}:32:FATAL:.abort 检测到。组装停止。

我最终不得不从 UIKit.h 中排除 UILocalizedIndexedCollat​​ion.h 并且一切正常。知道是什么导致了这个问题吗?我无法想象 Apple 会发送有缺陷的头文件。

4

3 回答 3

7

问题来自 SDK 3.0,它现在使用 gcc 4.2,但 scan-build 仍然使用 /usr/bin/gcc。所以你需要告诉 scan-build 使用 /usr/bin/gcc-4.2 代替。

scan-build --use-cc=/usr/bin/gcc-4.2 xcodebuild -configuration Debug

瞧!

于 2009-07-08T09:07:20.733 回答
2

Apple 的工程师已经确认他们在 UIKit 框架中存在错误:

对于这个 UIKit 错误,我们确实有一个简单的解决方法。在 UILocalizedIndexedCollat​​ion.h 中改变这个:

UIKIT_EXTERN @interface UILocalizedIndexedCollation : NSObject
to
UIKIT_EXTERN_CLASS @interface UILocalizedIndexedCollation : NSObject 

丹尼斯2342

于 2009-11-22T23:47:25.923 回答
0

通常当我看到这样的东西时,我会清理构建并重新启动 Xcode,然后一切都很好。在 GCC 4.2 中,有时一个糟糕的 pch 可能会导致这样的问题,但 clang 使用完全不同的 pch 实现。您可能希望在 Xcode 未运行时完全删除构建目录。

从技术上讲,iPhone 开发不支持 clang,但我将它用于模拟器编译,并且我没有看到您看到的编译错误,所以(至少对我而言)它可以工作。一件事在我脑海中浮现,你指的是编辑你的 UIKit.h。我明白你做了什么,但调整系统标题是大忌。您是否有可能出于其他原因这样做,因为如果您没有运行股票标题,那么可能会发生多种原因。

于 2009-07-03T07:40:18.857 回答