如果任何任务在开始之前完成,NSOperationQueue会同时运行所有任务吗?

时间:2015-08-12 02:29:29

标签: nsoperation nsoperationqueue

我遇到一些与NSOperationQueue有关的奇怪问题。我使用的应用程序使用它来管理下载操作,以便它们“一个接一个”运行。不幸的是,我发现如果一个操作在启动之前被取消,那么NSOperationQueue似乎会惊慌失措并在其生命周期的剩余时间内立即运行其队列中的所有操作。

除非“正在执行”,否则在取消操作时不设置“isFinished”可以避免这种“怪异”,但如果操作在启动之前被取消,则队列会卡住。

有解决方法吗?也许替换NSOperationQueue?

1 个答案:

答案 0 :(得分:0)

问题证明是通过设置"(bool)isFinished"在操作开始之前为是,NSOperationQueue感到困惑。解决方案是设置"(bool)isCancelled"到YES,然后等到在NSOperation上调用start()方法来设置"(bool)isFinished"是的。