为什么CGContextRef不是对象?

时间:2011-09-23 07:59:11

标签: objective-c core-graphics cgcontext

如果CGContextRef是一个真实的对象,它会更有意义吗? 现在你需要给它上下文,每次你想添加一个路径。 不要说得好多了: [context addPath:myPath]; 代替 CGContextAddPath(上下文,mypath中);

这是一个结构还是这里的交易? 有人在意吗?

1 个答案:

答案 0 :(得分:4)

从程序员的角度来看,它可能更容易,但它在C中的部分原因在于性能。在进行图形密集型代码和渲染时间(几乎总是如此)时,您要做的最后一件事就是分配大量临时对象。这是一种权衡 - 可读性/可维护性的表现。

正如Martin Ullrich所提到的,围绕一些核心图形的东西有一些Objective-C包装,但是在使用Objective-C之前知道发生什么事情真的要好得多(这将是更容易,但稍慢一点。)

顺便说一下,我所说的这种缓慢只是在你进行大量绘图时才会出现问题,并且你希望(或者需要)保持FPS /响应能力非常好。例如,如果要绘制数百个形状和线条,则需要直接使用CG。如果您只是绘制一些形状/图像/文本,使用Obj-C包装器只会产生可忽略的性能损失。