Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 空且完全空闲的串行队列_Ios_Objective C_Macos_Objective C Blocks_Grand Central Dispatch - Fatal编程技术网

Ios 空且完全空闲的串行队列

Ios 空且完全空闲的串行队列,ios,objective-c,macos,objective-c-blocks,grand-central-dispatch,Ios,Objective C,Macos,Objective C Blocks,Grand Central Dispatch,如何释放串行队列的块堆栈?我已经在队列中放置了一些异步执行的块,在某个点上我想完全释放这个队列,使其为空。我正在使用低级调度队列\u t。可能吗?谢谢。您使用的是哪种队列 是NSOperationQueue吗 然后,-[NSOperationQueue cancelAllOperations]应该完成这项工作。很抱歉,没有说得更具体。我正在使用低级调度队列\u t。请看这个。“NSOperationQueue为您提供了对操作执行方式的更多控制。例如,您可以定义单个操作之间的依赖关系,这在普通GC

如何释放串行队列的块堆栈?我已经在队列中放置了一些异步执行的块,在某个点上我想完全释放这个队列,使其为空。我正在使用低级
调度队列\u t
。可能吗?谢谢。

您使用的是哪种队列

是NSOperationQueue吗


然后,
-[NSOperationQueue cancelAllOperations]
应该完成这项工作。

很抱歉,没有说得更具体。我正在使用低级
调度队列\u t
。请看这个。“NSOperationQueue为您提供了对操作执行方式的更多控制。例如,您可以定义单个操作之间的依赖关系,这在普通GCD队列中是不可能的。还可以取消在NSOperationQueue中排队的操作(只要操作支持它)。当您将块放入GCD调度队列中时,它肯定会在某个时间执行。“是的,但我需要串行FIFO队列,
NSOperationQueue
不是这样工作的。请参阅。您是否试图取消当前正在执行的块?这基本上不能通过
dispatch\u queue
直接完成,您要么需要使用更高级别的构造,如
NSOperationQueue
,要么需要在调度队列执行中添加一个快速退出取消。我不认为“当前正在执行的块”是合适的,因为我们谈论的是FIFO队列。假设当我想要释放队列时,可能有当前正在执行的块。我理解,若当前正在执行的块不能被取消,那个么若这个块将完成执行,那个么它就可以了。但是我想取消剩余的块,这些块被堆叠起来以供执行。快速退出取消是什么意思?在调度队列中没有任何取消方法。因此,所有块都将执行,并且在某个时间点将成为当前正在执行的块。调度队列没有刷新机制。