2012-03-10 46 views
0

我正在为ios做一个调整(显示一些来自网页的图片),并且我正在尝试使用NSOperationQueue。 首先,我在主线程上运行了一些代码,看看它是怎样的。它持续±5秒以显示每个图像(UI冻结)。 然后我试图使用NSOperationQueue来运行相同的代码,但它为每个图像延续了+ 10secs(好处是UI没有冻结)。 任何想法?它就是这样吗?NSOperationQueue感觉比在主线程上运行代码要慢

+0

你如何下载图片?你使用的是initWithContentsOfURL还是类似的方法? – Ravin 2012-03-10 21:40:08

+0

我这样做:NSURL * url = [NSURL URLWithString:[_ HTMLPage substringWithRange:range]]; NSData * imageData = [NSData dataWithContentsOfURL:url]; _image = [UIImage imageWithData:imageData]; – 2012-03-10 21:45:21

+0

当您加载主线程上的所有图像时,集体下载时间约为5秒,并且操作队列的集体下载时间约为10秒? – Ravin 2012-03-10 21:57:48

回答

1

在iOS中,UI更新发生在主线程上,所以一旦完成操作队列,您需要通知主线程来更新UI,但在您的情况下,如您所说的那样更新但延迟。

您将需要从操作中调用performSelectorOnMainThread:withObject:waitUntilDone:(最后,当数据被下载时),并且在此主线程的选择器中,您将执行UI更新。

相关问题