我刚刚将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