2012-03-10 74 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更新。

相關問題