假设我有一个串行调度队列,我在其上排队了几个操作。我读到一旦 dispatch 就无法取消操作。是否有可能至少查看我已 dispatch 到哪些 GCD block ,以便决定是否要 dispatch 另一个 block ?
例如,我将操作 A 分派(dispatch)到队列中,但在我的应用程序决定将另一个操作 A 加入队列后不久,因此现在有 2 个这样的操作在排队。
最佳答案
正如 Kevin Ballard 所说,您需要详细说明您到底想做什么。您可以做的一件事是设置一个标志,例如 valid_
然后您可以通过执行以下操作有效地取消队列中除当前项目之外的所有项目:
dispatch_async(queue, ^{
if (valid_) {
// perform your task here
}
});
然后,每当您想“取消”队列时,只需将您的 valid_
标志设置为 NO
。
不过,请再次提供有关您尝试执行的操作的更多信息,我可以为您提供更好的答案。
关于objective-c - 检查排队的 GCD block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10503776/