2010-08-10 14 views
7

在iOS 4.0中通過Grand Central Dispatch加載圖像(每個塊)是否是一個好主意? (用於UITableView)爲什麼Apple建議使用GCD的runloop來獲取多個圖像?

爲什麼Apple首選的runloop,如WWDC視頻會話207和208所示?

+2

2007年GCD不存在。這很容易。 – jtbandes 2010-08-10 02:15:03

+0

來自WWDC 2010的會話207-207,但不是2007 – Henry 2010-08-10 04:20:46

回答

7

在這些視頻中所做的一點是,基金會的網絡現在不能很好地與Grand Central Dispatch集成,所以如果你想做基於Foundation的網絡,runloop是避免傳統線程問題的最佳選擇。但是,在第206節 - 「iPhone中的塊和大中央調度介紹」中,您將看到他們展示瞭如何使用GCD來實現此目的的一個示例。

我,我更喜歡GCD,因爲代碼的優雅,因爲(就像他們在這些視頻中說的那樣)這是未來的方式。

+0

GCD不適合基於基礎的網絡嗎?比什麼可以使用?並且它與基於Foundation的網絡A​​PI有什麼不同?謝謝 – Henry 2010-08-10 18:24:11

+0

@Henry - 在使用GCD時,我相信你會使用CFNetwork函數,而不是像NSURLConnection這樣的類。儘管如此,WWDC 2010 Session 208中的基於runloop的方法非常有趣。 – 2010-08-10 18:33:28

+0

感謝Brad,那麼你會推薦一個新手使用? GCD w/CFNetwork函數,或帶有runloop的帶NSURLConnection的runloop? – Henry 2010-08-10 19:16:47

5

我沒有看過這些影片還沒有,但這裏是克里斯·漢森(蘋果工程師)says about GCD vs NSOperation

始終使用可用的最高級別的 抽象你,降 下降到較低水平, 測量顯示他們需要 抽象。

換句話說,除非您有充分必要的理由去使用GCD,否則您應該使用NSOperations進行異步處理(例如爲表視圖加載圖像)。

+3

在這種情況下,創建NSOperation並將其放置到隊列中的開銷可能會累加到所有表視圖行中,因此更輕量級的塊可能更可取。 Blocks和GCD也可能簡化他的代碼來完成這項任務。 – 2010-08-10 14:33:05

相關問題