0

所以我想知道将长任务分解为 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 中的每个任务作为一个工作单元来管理更好?提前致谢。

4

1 回答 1

3

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

  • 同时做的工作安全吗
  • 工作是否在共享资源(例如网络或磁盘 IO,或锁)上竞争,以消除并发性
  • 每个工作单元是否足够大,值得单独调度的开销

(编辑)

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

于 2013-03-05T21:28:21.923 回答