2011-05-24 65 views
3

我正在用定制的drawRect函数构建UIView。这是一个相当复杂的观点,需要绘制一些不同的项目。我基本上已经将它分解成每个需要绘制的项目的一个函数。重复调用UIGraphicsGetCurrentContext时是否有任何性能损失

什么我不知道是我应该把我的CGContextRef,从UIGraphicsGetCurrentContext()获得,作为参数传递给每个函数,或者我可以把它在每个函数的开始?后面的选项看起来更加贴近我,但我想知道是否有很多的性能损失?

回答

4

这是一样的,除非你保存/恢复上下文。无论如何,从这种方法获取背景很可能永远不会成为瓶颈。

我建议如果你不保存和恢复状态,你可以使用UIGraphicsGetCurrentContext()。但是,如果您确实正在保存状态,则应该通过该状态,因为读取代码会更容易。

它的风格我想的事...

3

码头 - 奥利维尔的反应良好,而刚好擦过关键问题:不必担心它,直到你不得不。这是一个过早优化的情况。在花大量时间决定是否传递CGContextRef之前,您应该编写应用程序,然后查看性能。使用Instruments可以帮助您找出真正的瓶颈所在。如果事实证明这是导致问题(我非常怀疑),那么你可以优化它。

+0

够公平的,但是是什么让你认为我不担心它,因为我必须?在我看来,对于如何首先避免某些瓶颈有一些了解,而不是花时间在乐器中识别它们是更好的方法。 – 2011-05-24 04:43:37

0

只是在配置正确并经过良好测试后才能使用。

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

相关问题