我正在使用自定义UIView
功能构建drawRect
。这是一个相当复杂的视图,需要绘制许多不同的项目。我基本上把它分解为每个需要绘制的项目的一个函数。
我想知道的是,我应该将从CGContextRef
获取的UIGraphicsGetCurrentContext()
作为参数传递给每个函数,还是可以在每个函数的开头调用它?后一种选择看起来比较适合我,但我想知道是否有很多性能损失?
答案 0 :(得分:4)
除非您正在保存/恢复上下文,否则它是相同的。无论如何,从该方法获取上下文很可能永远不会成为瓶颈。
我建议如果您没有保存和恢复状态,可以使用UIGraphicsGetCurrentContext()
。但是,如果你确实在保存状态,那么你应该通过这个,因为它会更容易阅读你的代码。
我想这是个风格问题......
答案 1 :(得分:3)
Pier-Olivier的反应很好,只是抓住关键问题:在你必须之前不要担心。这是过早优化的情况。在花费大量时间决定是否传递CGContextRef
之前,您应该编写应用程序,然后查看性能。使用Instruments可以帮助您找出真正的瓶颈所在。如果事实证明这是导致问题(我非常怀疑),那么你可以优化它。
答案 2 :(得分:0)
在正确实施并经过充分测试后进行简介。
如果它真的显示为热点,那么您的问题可能最好分割,和/或渲染到屏幕外的上下文......或者使用较低级别的渲染。