我正在用定制的drawRect
函数构建UIView
。这是一个相当复杂的观点,需要绘制一些不同的项目。我基本上已经将它分解成每个需要绘制的项目的一个函数。重复调用UIGraphicsGetCurrentContext时是否有任何性能损失
什么我不知道是我应该把我的CGContextRef
,从UIGraphicsGetCurrentContext()
获得,作为参数传递给每个函数,或者我可以把它在每个函数的开始?后面的选项看起来更加贴近我,但我想知道是否有很多的性能损失?
我正在用定制的drawRect
函数构建UIView
。这是一个相当复杂的观点,需要绘制一些不同的项目。我基本上已经将它分解成每个需要绘制的项目的一个函数。重复调用UIGraphicsGetCurrentContext时是否有任何性能损失
什么我不知道是我应该把我的CGContextRef
,从UIGraphicsGetCurrentContext()
获得,作为参数传递给每个函数,或者我可以把它在每个函数的开始?后面的选项看起来更加贴近我,但我想知道是否有很多的性能损失?
这是一样的,除非你保存/恢复上下文。无论如何,从这种方法获取背景很可能永远不会成为瓶颈。
我建议如果你不保存和恢复状态,你可以使用UIGraphicsGetCurrentContext()
。但是,如果您确实正在保存状态,则应该通过该状态,因为读取代码会更容易。
它的风格我想的事...
码头 - 奥利维尔的反应良好,而刚好擦过关键问题:不必担心它,直到你不得不。这是一个过早优化的情况。在花大量时间决定是否传递CGContextRef
之前,您应该编写应用程序,然后查看性能。使用Instruments可以帮助您找出真正的瓶颈所在。如果事实证明这是导致问题(我非常怀疑),那么你可以优化它。
只是在配置正确并经过良好测试后才能使用。
如果它真的显示为热点,那么你的问题可能是最好的划分,和/或渲染到屏幕外的上下文......或通过使用较低级别的渲染。
够公平的,但是是什么让你认为我不担心它,因为我必须?在我看来,对于如何首先避免某些瓶颈有一些了解,而不是花时间在乐器中识别它们是更好的方法。 – 2011-05-24 04:43:37