【发布时间】:2015-10-30 19:31:42
【问题描述】:
我想了解NSOperation 子类的正确行为是什么。
我的子类具有不同的isReady 条件。是的,如果操作被取消,我会签入代码并采取相应措施。这在操作执行时非常有用。它停止任务,将finished 设置为true,然后从队列中删除。但是它的依赖关系呢?它们还没有执行,所以它们永远停留在cancelled 状态下的NSOperationQueue。
我是否应该为取消的操作设置ready = true,以便队列将调用将在执行中设置的启动方法并立即完成任务设置finished为true?
【问题讨论】:
-
如果
b依赖于a,b将在a.finished == true和b.ready == true之后执行 -
你没有得到问题。依赖行为是明确的。不清楚的是我应该为取消逻辑做什么。如果 b 依赖于 a,a 正在执行并被取消,b 也将被取消,但 ready 不能为 true,因此队列不会从数组中删除操作。那就是问题所在。我现在感兴趣的是操作尚未开始时取消的逻辑。谢谢。
-
你叫哪个
canceloperationQueue.cancelAllOperations()或a.cancel()? -
我有一个被取消的操作。无论哪种方式。取消方法被调用。依赖项应该怎么办?
-
会执行依赖的操作。不管
a是否被取消。您应该将operation.finished==true设置为最终状态以使NSOperationQueue删除operation。只要准备好开始operation,就应该设置.ready==true。在operation的生命周期中,你应该经常检查.cancelled,每当.cancelled == true,你应该停止operation并设置.finished == true。
标签: ios objective-c swift nsoperation nsoperationqueue