在Xcode3上运行良好的项目无法在Xcode4上编译并出现此错误:
文件://localhost/users/Ishaq/Projects/game01/libs/cocos2d/CCLayer.m: 错误:语义问题:发送'ccColor4B'(又名'struct _ccColor4B') 到不兼容类型'CIColor *'
的参数
抛出此错误的代码如下(来自cocos2d-iphone CCLayer.m
):
+ (id) layerWithColor:(ccColor4B)color
{
return [[[self alloc] initWithColor:color] autorelease];
}
Xcode认为此代码正在调用- (id)initWithColor:(CIColor *)color;
的{{1}}(CIImage
内)。如何设置Xcode的大脑? ; - )
答案 0 :(得分:31)
我遇到了同样的问题。我的解决方案是明确地转换它正确的类型,这有助于编译器找到合适的类。所以代码看起来像这样:
return [[(CCColorLayer*)[self alloc] initWithColor:color] autorelease];
答案 1 :(得分:1)
您可以将self
更改为实际的类名CCLayer
,它应该将Xcode指向正确的方向。
答案 2 :(得分:1)
使用“LLVM GCC 4.2”编译器时,我发生了同样的事情。将编译器设置更改为“Apple LLVM Compiler 3.0”修复了它。