我有一个自定义drawRect:function,我正在绘制上下文。在两个不同的点上,我一直在“检测到堆缓冲区溢出”。这两行代码是:
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吗?