苹果公司的Documentation提到,必须手动处理对PDF的quartzcore渲染进行线程化的操作。有没有人实现过多核PDF渲染,或者有任何想法可以如何减轻渲染工作的负担以将线程分开或将文档分成页面块并将其按文档说明分配给单独的内核?目前,我的应用程序在大约1.5秒内加载了较大的PDF,但是多线程处理可以极大地减少该时间(哈哈)。
最佳答案
如您所述,文档明确指出“不支持将PDF文档的各个页面分配到单独的线程。如果要使用线程,请考虑为每个线程创建一个单独的文档,并对每个线程处理一个页面块。”尽管为了使本指南适应GCD,您要做的是为每个“页面块”创建一个串行队列(当然,块大小可以为“一页”),然后通过提交来创建和操作单个CGPDFDocumentRef块到各自的队列。通过使给定CGPDFDocumentRef的 setter/getter 与带有dispatch_sync的相同队列一起使用来获取值,从而保护数据结构,然后连接用户界面以呈现文档的任何给定页面(或整个文档)就很简单了。 ),逐步遍历各个块,以至于其余代码似乎仍然是一个大文档。
关于ios - CGPDFDocument线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8199929/