我如何使用Cocoa / CoreText / Quartz进行多线程绘图

时间:2010-08-27 01:56:47

标签: multithreading cocoa

有没有怎样的声音?

此处背景线程绘制的最佳做法是什么。

是否可以将[NSView drawRect]中的矩形数据存储在队列中,然后让后台线程获取矩形并创建一些位图并将数据渲染到位图中,然后使用performSelectorOnMainThread:withObject来绘制它?或者我可以直接从背景中绘制一个上下文。

我从Bunny Laden那里购买了“Programming with Quartz 2D”这本书,但尚未阅读,书中没有关于多线程的提示。在普通的Apple API参考页面中也找不到任何内容。

1 个答案:

答案 0 :(得分:1)

是的,可以将[NSView drawRect]中的矩形数据存储在队列中,然后让后台线程获取矩形并创建一些位图并将数据渲染到位图中,然后使用performSelectorOnMainThread:withObject来绘制它。

只要您以线程安全的方式执行此操作。

这与绘图无关,所以没有理由在“使用Quartz 2D编程”中提及它(顺便说一下这本书很棒 - 你绝对应该阅读它)。你可能想要一本关于多线程的配套书。

请考虑问题的第一部分。你如何将rect存储在队列中?将它添加到NSMutableArray?不是线程安全的。

Grand Central Dispatch将提供很多帮助(您没有提到您希望支持的平台)。