NSOperation层次结构,工作单元

时间:2013-03-05 21:23:45

标签: ios nsoperation

所以我想知道将长期任务分解为NSOperations的最佳方法是什么。如果我有3个长时间运行的任务,最好有一个基本上像

这样的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中的每个任务作为一个单独的工作单元进行管理?提前谢谢。

1 个答案:

答案 0 :(得分:3)

取决于操作队列是串行(即最大并发操作1)还是并行,以及工作的性质是什么。如果队列是串行的,那么它确实无关紧要。如果队列是并行的,那么它取决于一系列因素:

  • 是可以安全地同时进行的工作
  • 工作是否会攻击将删除并发的共享资源(例如网络或磁盘IO或锁)
  • 是每个工作单位足够大,值得单独调度的开销

(编辑)

此外,如果您不需要NSOperationQueue的高级功能(操作依赖性和优先级,KVO等等),请考虑使用调度队列。它们的重量显着减轻了。