我刚刚将Xcode从4.6.2版本更新到5.0,并且在我的项目(在Xcode 4.6.2中创建)中执行了一种方法之后,突然发出了编译器警告。我尝试过在旧版本的Xcode和新版本的Xcode中重新打开该项目,并且我已经确认相同的方法在4.6.2中未给出任何警告。

这是在Xcode 5.0中引发警告的代码行:

CGContextRef context = CGBitmapContextCreate(NULL, frame.size.width * scaleFactor, frame.size.height * scaleFactor, 8, frame.size.width * scaleFactor * 4, colorSpace, kCGImageAlphaPremultipliedFirst);

警告说:
"Implicit conversion from enumeration type 'enum CGImageAlphaInfo' to different enumeration type 'CGBitMapInfo' (aka 'enum CGBitMapInfo')"

它似乎不是一个过时的警告,但是我对这些类还不够熟悉,无法解释其含义或不知道如何解决它。任何帮助表示赞赏。

最佳答案

kCGImageAlpha*枚举值应该填充CGBitmapInfo中的前五位。但是,由于C类型系统无法表达这一点,因此您会收到警告,即使它们原本打算匹配,但类型仍不匹配。

正确的解决方案是将您的alpha枚举值转换为CGBitmapInfo,因为它就是这样:

(CGBitmapInfo)kCGImageAlphaPremultipliedFirst

10-08 08:36
查看更多