2013-03-05 75 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