我在学习可可的绘画技巧。我在我的drawRect方法中从NSRects创建了两个NSBezierPath对象,一个永远不变,另一个根据发生的事情改变宽度。
所以很可能,我的drawRect被调用了很多次,但是每次重新创建两个NSBezierPath对象似乎是错误的,只更新第二个NSBezierPath宽度(或者更新它的NSRect)会更好。
我能这么做吗?我试图在initWithFrame方法中创建第一个NSBezierPath,但似乎导致了一个问题。
发布于 2010-02-15 01:37:00
让视图在其initWithFrame:方法中创建两个贝塞尔曲线路径,然后(如果您没有使用GC)在dealloc中释放它们。
对于大小灵活的路径,drawRect:应该计算出正确的宽度,并从the path's bounds收集路径的当前宽度,然后使用use an affine transformation按适当的因子缩放路径。这将允许您在视图的整个生命周期中重用相同的两个path对象。
也就是说,正如俗语所说,过早优化是万恶之源。你不应该担心这一点,直到你发现应用程序很慢,在Shark或Instruments下运行它,并证明这些对象的高周转率是一个真正的问题。让清晰的代码成为你的首要任务,除非另有必要。
https://stackoverflow.com/questions/2261983
复制相似问题