我从未使用过界面生成器中提到的“Can draw concurrently”选项。请参见下图:
有人能解释一下它的用途和目的吗?
我从未使用过界面生成器中提到的“Can draw concurrently”选项。请参见下图:
有人能解释一下它的用途和目的吗?
您可以使用它通知 AppKit, 您的 NSView
子类的 -drawRect:
实例方法可能会被从辅助线程调用。
这适用于 10.6+。当或如果 AppKit 异步渲染视图时,-drawRect:
将使用并发块执行,并且将从辅助线程调用您的 -drawRect:
。这意味着您子类的实现必须是线程安全的(为了兼容性,默认情况下被禁用)。
有关详细信息,请参见 -[NSView setCanDrawConcurrently:]
,因为实际启用此行为需要完成一些操作。此外,这并不意味着 AppKit 是线程安全的,也不意味着其 NSView
子类被设计为支持此功能 - 它是为 您的 大量绘图而设计的。
NSProgressIndicator
。如果勾选了可以同时绘制,则可以从后台线程调用该视图的drawRect方法。参见NSView类参考文档。
drawsAsynchronously
属性可能会提供足够的性能,而无需使drawRect:
线程安全。在OS X上,您需要使用支持图层的视图来使用drawsAsynchronously
。 - rob mayoff