2013-03-05 94 views
0

所以我想知道什麼是將長期任務分解爲NSOperations的最佳方式。如果我有3個長時間運行的任務,是它最好有一個的NSOperation子類,基本上沒有像NSOperation層次結構,工作單元

Single NSOperation subclass 
- (void)main { 
    // do long running task 1 
    // do long running task 2 
    // do long running task 3 

    // call back the delegate 
} 

還是更要有每個任務的NSOperation的一個子類,然後從我的ViewController管理每一個任務作爲一個單一的工作單位?提前致謝。

+0

您是否需要執行獨立於其他任務的任何任務?任務應該平行還是嚴格按順序進行? – 2013-03-05 21:27:32

回答

3

它取決於操作隊列是串行的(即最大併發操作1)還是並行操作,以及工作的性質是什麼。如果隊列是串行的,那麼它確實沒有關係。如果隊列是平行的,則它依賴於一串因素:

  • 是工作安全的話同時
  • 做的工作抗衡上的共享資源(例如網絡或磁盤IO,或鎖),將刪除併發
  • 工作是足夠大的每個單位是值得單獨調度的開銷

(編輯)

另外,如果你不需要ADVAN ced NSOperationQueue的特性(操作依賴和優先級,KVO等),請考慮使用調度隊列。它們重量更輕。

+0

+1我同意你的說法;) – 2013-03-05 21:30:27