0

我正在使用从 NSOperation 继承的对象进行下载。我已经阅读了文档,当我的操作完成后,我必须调用

[self.delegate performSelectorOnMainThread:@selector(operationDidFinish:) withObject:self waitUntilDone:YES];

方法。它需要在主线程上调用,因为 UIKit 不是线程安全的,并且文档在这些非线程安全框架案例中说明了这一点。在委托方法中,我正在绘制 pdf 或图像,但是因为它是在主线程上绘制的,所以用户界面在绘制完成之前非常滞后。也许你能建议我一个避免这个问题的好方法吗?

4

1 回答 1

1

我假设您正在下载图像数据、对其进行解码并渲染图像。最后一点,渲染,必须发生在主线程上。您可以将解码部分移动到您的下载线程吗?例如,使用 CGImage 调用来解码 png 或 jpeg,因此在调用 operationDidFinish 之前,您已经准备好使用 CGImageRef。如果您可以将 PDF 用作图像,则最好将其转换而不是在主线程中对其进行解码。

于 2010-04-15T11:36:12.970 回答