我正在为 ipad 开发一个自定义 PDF 阅读器。我已经在其中UIScrollView
添加/删除UIViews
了相应的 pdf 页面的等效缩略图。我正在创建一个NSOperation
并添加到 aNSOperationQueue
一旦UIView
添加到滚动查看以在背景中生成 PDF 缩略图。在任何时间点,滚动视图上都会有 3 个 UIViews。整个安排适用于小 PDF 文件,因为它们渲染速度很快,但问题在于大/复杂的 PDF 页面,当曾经用户在特定页面离开导航,根据我的实现,将有 3NSOperations
同时在后台工作以生成 3 个缩略图(一个用于上一页,一个用于当前页面,另一个用于下一页)因此需要很长时间才能显示当前页面。我尝试遍历所有活动NSOperation
对象并设置高优先级假设在 scrollViewDidEndDecelerating: 方法中呈现当前页面缩略图,但它不起作用并且结果仍然相同。请建议我解决我的问题的方法,在此先感谢。
问问题
600 次
1 回答
0
如果您已将您设置NSOperationQueue
为在后台工作(即您没有调用[NSOperationQueue mainQueue]
. 任务应该异步完成,但直到很久以后才会更新在主线程上运行的视图。优先级并不重要,因为它确实与发生动作的线程无关。解决方案是添加:
-(void)main {
// ** load PDF image **
[self performSelectorOnMainThread:@selector(insertImageLoaded:)
withObject:img
waitUntilDone:YES];
}
基本上,您必须记住的是,iOS 创建了一个小线程池,当使用 GCD 和 NSOperations 时,它更加明显。
于 2012-11-20T16:07:52.747 回答