Cocoa touch 绘制矩形图与优化

Cocoa touch 绘制矩形图与优化,cocoa-touch,optimization,drawing,Cocoa Touch,Optimization,Drawing,我有一个NSMutableArray保存对象(对象表示圆弧) 每次我点击屏幕时,一个圆被添加到数组中,并且draw rect设置needsupdate。我没有打电话给drawRect:,只是告诉它需要更新 每次drawRect:查看圆圈数组时,它是重新绘制每个圆圈,还是只重新绘制与上次相比新的/未更改的圆圈 如果它确实重新绘制了每个圆,那么有什么好的做法可以针对这一点进行优化吗?你是说你在调用setNeedsDisplay吗?如果是这样,该方法将重新绘制整个视图。如果您只想重新绘制视图的一部分,

我有一个
NSMutableArray
保存对象(对象表示圆弧)

每次我点击屏幕时,一个圆被添加到数组中,并且draw rect设置needsupdate。我没有打电话给drawRect:,只是告诉它需要更新

每次
drawRect:
查看圆圈数组时,它是重新绘制每个圆圈,还是只重新绘制与上次相比新的/未更改的圆圈


如果它确实重新绘制了每个圆,那么有什么好的做法可以针对这一点进行优化吗?

你是说你在调用setNeedsDisplay吗?如果是这样,该方法将重新绘制整个视图。如果您只想重新绘制视图的一部分,可以使用setNeedsDisplayInRect:。

您的意思是调用setNeedsDisplay吗?如果是这样,该方法将重新绘制整个视图。如果只想重新绘制视图的一部分,则可以使用setNeedsDisplayInRect:

绘图代码完全按照它所说的执行--如果编写它来绘制每个圆,则绘制每个圆。您可以编写
drawRect:
方法,以便将传递的矩形考虑在内,该矩形是视图的“脏”部分——该部分需要更新,但只有在通过测试和测量确定图形是性能问题时,才值得这样做


但是,如果您使用
setNeedsDisplay
,而不是使用
setNeedsDisplayInRect:
,传递一个适当的脏矩形,Cocoa Touch将剪裁您的图形,这样它就不必刷新整个屏幕。例如,当添加一个新圆时,您可以只传递每个新圆的边界矩形。

您的绘图代码完全按照它所说的去做——如果您编写它来绘制每个圆,那么每个圆都会被绘制出来。您可以编写
drawRect:
方法,以便将传递的矩形考虑在内,该矩形是视图的“脏”部分——该部分需要更新,但只有在通过测试和测量确定图形是性能问题时,才值得这样做


但是,如果您使用
setNeedsDisplay
,而不是使用
setNeedsDisplayInRect:
,传递一个适当的脏矩形,Cocoa Touch将剪裁您的图形,这样它就不必刷新整个屏幕。例如,您可以在添加一个新圆时只传递每个新圆的边界矩形。

您调用什么方法让视图知道它需要更新?您调用什么方法让视图知道它需要更新?感谢您的帮助我不知道该方法“setNeedsDisplayInRect:”谢谢你的帮助我不知道这个方法“setNeedsDisplayInRect:”是的,我没有打开xcode,所以我猜这个方法叫什么“SetNeedsUpdate”应该是“setNeedsDisPlay”是的,我没有打开xcode,所以我猜这个方法叫什么“SetNeedsUpdate”应该是“setNeedsDisPlay”