9

我正在寻找一种重新排序 NSOperationQueue 的方法。

我可以取消所有操作并使用我想要的顺序将它们折回,但我希望有一些更清洁的东西。有什么想法吗?

4

2 回答 2

21

NSOperationQueue与底层 GCD 队列之间的主要区别在于NSOperation支持操作之间的依赖关系。NSOperationQueue在其所有依赖项完成之前不会安排操作。在可用操作中,选择优先级最高的操作接下来运行。

由于操作队列可能同时运行多个操作(根据maxConcurrentOperations),因此队列上没有严格的顺序感。使用依赖 API 或更改操作优先级会更好。

我相信您可以在将操作添加到队列后更改依赖关系和优先级。

于 2010-01-26T18:36:15.507 回答
6

无法对队列中的操作重新排序。如果您需要表示一个操作必须在另一个之后进行,请使用依赖项 API 来执行此操作。

有关更多信息,请参阅NSOperationQueue文档。概述的前两段讨论了依赖关系。

于 2010-01-26T18:33:19.477 回答