我似乎对 dispatch_queue_t
和 NSOperationQueue
队列有些混淆。
默认情况下,AFNetworking 的AFImageRequestOperation
将在应用程序的主线程上执行成功回调 block 。要更改此设置,AFHTTPRequestOperation
具有属性 successCallbackQueue
,您可以选择在哪个队列上运行回调。
我正在尝试在已经执行 HTTP 请求的相同后台队列/后台线程上执行成功回调。 NSOperationQueue
而不是返回主线程> 运行 HTTP 请求的也应该运行回调,因为我需要使用一些返回的图像进行一些繁重的计算。
我的第一个尝试是将 successCallbackQueue
设置为运行 AFImageRequestOperation
的 NSOperationQueue
实例。但是,successCallbackQueue
属性的类型为 dispatch_queue_t
,因此我需要一种方法来获取 NSOperation 的底层
实例,如果有的话。dispatch_queue_t
这可能吗,还是我需要创建一个单独的 dispatch_queue_t
?
我问的原因:AFNetworking 继承自 NSOperation
有点奇怪,但希望我们使用 dispatch_queue_t
队列进行回调。混合了两种范式 dispatch_queue_t
和 NSOperationQueue
。
感谢任何提示!
最佳答案
没有这样的东西,NSOperationQueue
和dispatch_queue_t
不是一一对应的,两个API中的队列概念很不一样不同(例如,NSOperationQueue 不像 GCD 那样具有严格的 FIFO 队列)。
NSOperationQueue 用于执行代码的唯一调度队列是默认优先级全局并发队列。
关于ios - 从 NSOperationQueue 获取底层的 dispatch_queue_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16563410/