0
[self.operationsQueue waitUntilAllOperationsAreFinished];
[self.operationsQueue cancelAllOperations];
這並沒有達到我想要的效果。如何取消NSOperationsQueue中的所有操作並從隊列中刪除所有操作
如何取消NSOperationsQueue
中的所有操作並從隊列中刪除所有操作?
[self.operationsQueue waitUntilAllOperationsAreFinished];
[self.operationsQueue cancelAllOperations];
這並沒有達到我想要的效果。如何取消NSOperationsQueue中的所有操作並從隊列中刪除所有操作
如何取消NSOperationsQueue
中的所有操作並從隊列中刪除所有操作?
你不需要[self.operationsQueue waitUntilAllOperationsAreFinished]
。
[self.operationsQueue cancelAllOperations]
只是在隊列中的所有操作上設置了isCancelled = YES
,這取決於操作本身對此作出的反應。
因此,您只需在運行時定期檢查self.isCancelled
。
- (void)main
{
if (self.isCancelled) {
return;
}
// Do some work
if (self.isCancelled) {
return;
}
// Do some more work
}
對'waitUntilAllOperationsAreFinished'的調用會阻塞,直到所有操作完成。試圖在此之後取消操作是毫無意義的,因爲它們都是在那個時候完成的。 – rmaddy
我不明白你的意思畢竟操作完成取消。 –
在所有操作完成之前'waitUntilAllOperationsAreFinished'不會返回。當您的代碼到達您對'cancelAllOperations'的調用時,隊列中不會再有任何操作。沒有什麼可以取消的。 – rmaddy