UIGraphicsBeginImageContext与iOS上的CGBitmapContextCreate

这可能是一个非常愚蠢的问题,但是有人可以告诉我使用UIGraphicsBeginImageContext创buildCGContextRef和使用CGBitmapContextCreate绘制图像的区别吗? 特别是现在,因为UIKit绘图是线程安全的,我想知道是否有任何理由通过UIGraphicsBeginImageContext使用CGBitmapContextCreate。

根据2010年11月15日封面date的苹果UIKit函数参考 , UIGraphicsBeginImageContext和相关函数仍然只能在主线程上调用。 最新的Xcode 3.2.5附带的开发者文档中重复了相同的文字。 但是,它报告相同的UIGraphicsGetCurrentContext ,我明白了现在线程安全。 我的理解是,只有UIGraphicsGetCurrentContext和UIImage,UIColor和UIFont类现在线程安全,而不是整个UIKit,但我无法find明确的参考。

无论如何, UIGraphicsBeginImageContext是位于CGBitmapContextCreate之上的UIKit包装器,并降低了其function。 特别是,您仅限于具有固定组件顺序的RGBA色彩空间图像(尽pipe它根据iOS版本而不同),并且无法指定您自己的绘图目标缓冲区。 所以,举例来说,做一堆CoreGraphics组合,然后将结果发布到OpenGL是无用的,并且对于已经以某种arraysforms获得的pipe道graphics不利于CoreGraphics。

但是,如果UIKit方法支持您需要的function并且可以安全使用,那么CoreGraphics方法没有固有优势。