我刚刚将 Xcode 从 4.6.2 版更新到 5.0 版,在我的项目(在 Xcode 4.6.2 中创建)中执行一个方法后,突然出现编译器警告。我已经尝试在新旧版本的 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
关于ios - CGBitMapContextCreate 方法导致编译器警告 Xcode 5 而不是 Xcode 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18831179/