重复调用UIGraphicsGetCurrentContext时是否存在性能损失

时间:2011-05-24 01:01:21

标签: iphone objective-c drawrect

我正在使用自定义UIView功能构建drawRect。这是一个相当复杂的视图,需要绘制许多不同的项目。我基本上把它分解为每个需要绘制的项目的一个函数。

我想知道的是,我应该将从CGContextRef获取的UIGraphicsGetCurrentContext()作为参数传递给每个函数,还是可以在每个函数的开头调用它?后一种选择看起来比较适合我,但我想知道是否有很多性能损失?

3 个答案:

答案 0 :(得分:4)

除非您正在保存/恢复上下文,否则它是相同的。无论如何,从该方法获取上下文很可能永远不会成为瓶颈。

我建议如果您没有保存和恢复状态,可以使用UIGraphicsGetCurrentContext()。但是,如果你确实在保存状态,那么你应该通过这个,因为它会更容易阅读你的代码。

我想这是个风格问题......

答案 1 :(得分:3)

Pier-Olivier的反应很好,只是抓住关键问题:在你必须之前不要担心。这是过早优化的情况。在花费大量时间决定是否传递CGContextRef之前,您应该编写应用程序,然后查看性能。使用Instruments可以帮助您找出真正的瓶颈所在。如果事实证明这是导致问题(我非常怀疑),那么你可以优化它。

答案 2 :(得分:0)

在正确实施并经过充分测试后进行简介。

如果它真的显示为热点,那么您的问题可能最好分割,和/或渲染到屏幕外的上下文......或者使用较低级别的渲染。