Objective c 什么是界面生成器?
我从未使用过iterface builder中提到的“可以同时绘制”选项。见下图:Objective c 什么是界面生成器?,objective-c,xcode,macos,cocoa,interface-builder,Objective C,Xcode,Macos,Cocoa,Interface Builder,我从未使用过iterface builder中提到的“可以同时绘制”选项。见下图: 有人能解释一下它的用途吗?该选项用于支持螺纹绘图的视图,例如NSProgressIndicator。如果选中CanDraw Concurrent,则可以从该视图的后台线程调用drawRect。参考课堂参考。 您可以使用它通知AppKit您的NSView子类'-drawRect:实例方法可能会从辅助线程调用 是10.6+。当/如果AppKit异步呈现视图时,将使用并发块执行-drawRect:,并且将从辅助线程调
有人能解释一下它的用途吗?该选项用于支持螺纹绘图的视图,例如
NSProgressIndicator
。如果选中CanDraw Concurrent,则可以从该视图的后台线程调用drawRect。参考课堂参考。您可以使用它通知AppKit您的
NSView
子类'-drawRect:
实例方法可能会从辅助线程调用
是10.6+。当/如果AppKit异步呈现视图时,将使用并发块执行-drawRect:
,并且将从辅助线程调用您的-drawRect:
。这意味着子类的实现必须是线程安全的(为了兼容性,默认情况下禁用它)
有关详细信息,请参见
-[NSView setcandraw::
,因为实际启用此行为所需的东西很少。此外,它不应该暗示AppKit是线程安全的,或者它的NSView
子类是为支持此功能而设计的-它是为您的重绘图而设计的。注意,从OS X 10.8和iOS 6.0开始,在视图层上同步设置新的drawsa
属性可以提供足够的性能,而不会使drawRect:
线程安全。在OSX上,您需要使用层备份视图来同步使用drawsa
@robmayoff nice tip+1。你有没有偶然测量过这一点,或者遇到过一篇好的评论?我已经编写线程安全并发渲染器一段时间了。我想这是一个很多人都想避免的领域:)我没有玩过。《优化2D图形和动画性能》视频从31m24s左右开始讨论。