首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >drawRect -重用NSBezierPath

drawRect -重用NSBezierPath
EN

Stack Overflow用户
提问于 2010-02-15 01:26:21
回答 1查看 686关注 0票数 2

我在学习可可的绘画技巧。我在我的drawRect方法中从NSRects创建了两个NSBezierPath对象,一个永远不变,另一个根据发生的事情改变宽度。

所以很可能,我的drawRect被调用了很多次,但是每次重新创建两个NSBezierPath对象似乎是错误的,只更新第二个NSBezierPath宽度(或者更新它的NSRect)会更好。

我能这么做吗?我试图在initWithFrame方法中创建第一个NSBezierPath,但似乎导致了一个问题。

EN

回答 1

Stack Overflow用户

发布于 2010-02-15 01:37:00

让视图在其initWithFrame:方法中创建两个贝塞尔曲线路径,然后(如果您没有使用GC)在dealloc中释放它们。

对于大小灵活的路径,drawRect:应该计算出正确的宽度,并从the path's bounds收集路径的当前宽度,然后使用use an affine transformation按适当的因子缩放路径。这将允许您在视图的整个生命周期中重用相同的两个path对象。

也就是说,正如俗语所说,过早优化是万恶之源。你不应该担心这一点,直到你发现应用程序很慢,在Shark或Instruments下运行它,并证明这些对象的高周转率是一个真正的问题。让清晰的代码成为你的首要任务,除非另有必要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2261983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档