0

だから私は長いタスクをNSOperationsに分割するための最良の方法は何だろうと思っていました。長時間実行されるタスクが3つある場合、基本的に次のようなことを行うNSOperationサブクラスを1つ持つ方がよいでしょう。

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からの各タスクを単一の作業単位として管理する方がよいでしょうか。前もって感謝します。

4

1 に答える 1

3

操作キューがシリアル (つまり、最大同時操作数 1) かパラレルか、および作業の性質によって異なります。キューが連続している場合は、実際には問題になりません。キューが並列である場合、それは一連の要因に依存します。

  • 同時に行っても安全な作業ですか
  • 同時実行性を削除する共有リソース (ネットワークまたはディスク IO、またはロックなど) で作業が競合しますか?
  • 各作業単位は、個別にディスパッチするオーバーヘッドに見合うだけの十分な大きさがありますか?

(編集)

また、NSOperationQueue の高度な機能 (操作の依存関係と優先順位、KVO など) が必要ない場合は、代わりにディスパッチ キューの使用を検討してください。大幅に軽量化されています。

于 2013-03-05T21:28:21.923 に答える