天天看點

NSOperationQueue與GCD的差別

  • NSOperationQueue 是在GCD基礎上實作的,隻不過是GCD更高一層的抽象。
  • GCD 隻支援FIFO 的隊列, 而NSOperationQueue可以調整隊列的執行順序。(通過調整權重)
  • NSOperationQueue可以在Operation間設定依賴關系,而GCD不可以。 如果一個Operation依賴另一個Operation所産生的資料的化,你可以設定一個Operation依賴于另一個Operation來實作, NSOperationQueue可以根據依賴關系,可以以正确的順序執行Queue中的Operation。
  • NSOperationQueue支援KVO。 這就意味着你可以觀察任務的狀态屬性。

以上幾點并不是說在任何處理多任務時一定要選擇NSOperationQueue, 因為NSOperationQueue在執行速度上會比GCD慢。