我正在为ipad开发一个自定义PDF阅读器。我已经使用UIScrollView
并添加/删除UIViews
,其中将显示相应pdf页面的等效缩略图。我正在创建一个NSOperation
并在NSOperationQueue
添加到滚动视图后立即添加到UIView
以在后台生成PDF缩略图。任何时候滚动视图上都会有3个UIViews整个安排与小PDF文件一起正常工作,因为它们渲染速度快,但问题在于大/复杂的PDF页面,当用户在特定页面上离开导航时,根据我的实现,将有3 {{1}同时在后台工作以生成3个缩略图(一个用于上一页,一个用于当前页面,另一个用于下一页)因此整个过程需要很长时间才能显示当前页面。我试图遍历所有实时页面{{ 1}}对象并设置高优先级,以假设在scrollViewDidEndDecelerating:方法中呈现当前页面缩略图,但它不起作用由此产生的效果仍然相同。请提前告诉我一个解决问题的方法,提前谢谢。
答案 0 :(得分:0)
如果您已将NSOperationQueue
设置为在后台工作(即您尚未调用[NSOperationQueue mainQueue]
。任务应异步完成,但不会更新主线程上运行的视图优先级无关紧要,因为它与执行操作的线程无关。解决方案是添加:
-(void)main {
// ** load PDF image **
[self performSelectorOnMainThread:@selector(insertImageLoaded:)
withObject:img
waitUntilDone:YES];
}
基本上,你必须记住的是iOS创建了一个小线程池,当使用NCDperations的GCD时更加明显。