1

我有一个自定义 drawRect: 函数,我在其中绘制到上下文。在两个不同的点上,我一直在点击“检测到堆缓冲区溢出”。这两行代码是:

CGContextSetFillColor(context, CGColorGetComponents(self.myColor.CGColor));
CGContextSetStrokeColor(context, CGColorGetComponents(self.myColor.CGColor));

似乎任何时候 CGContext 方法引用颜色时,都会检测到堆缓冲区溢出。我能够追踪的奇怪之处在于正在使用的 UIColor 对象的类型。每当 UIColor 的类型为“UIDeviceWhiteColorSpace”时,就会发生这种崩溃。只要 UIColor 的类型为“UIDeviceRGBColorSpace”,就不会发生这种崩溃。

产生“UIDeviceWhiteColorSpace”颜色类型的颜色示例有:

[UIColor clearColor]
[UIColor whiteColor]
[UIColor lightGrayColor]

现在,我有一个解决方法来从 HEX 值生成“清晰”、“白色”和“浅灰色”颜色,我的 HEX 方法生成“UIDeviceRGBColorSpace”类型的 UIColor。

这段代码在 iOS7 和 iOS8 上运行良好一段时间了。

最终我的问题是:其他人是否正在经历这种情况?还有其他已知的解决方法吗?我们可以期待这会持续到 iOS 9 GM 中吗?

4

0 回答 0