无法调用dispatch_get_global_queue

时间:2015-12-29 12:09:47

标签: ios xcode swift

我有这行代码:

let queue = dispatch_get_global_queue(DISPATCH_QUEUE_CONCURRENT, 0);

我收到错误

  

无法使用类型的参数列表调用dispatch_get_global_queue   (dispatch_queue_atr_t,Int)

一定是我想念的东西......

更新

当我使用xcode codeinsight / dropdown建议输入内容时,建议使用dispatch_queue_attr_t类型的DISPATCH_QUEUE_CONCURRENT - 但是,当进入代码时,我可以(现在)看到它预期的参数很长。

我很想获得一个使用多个线程的队列,IO任务可以分组。 (即我不希望o"停止"队列等待下载一些文件。)我在这里读到了:

https://developer.apple.com/library/ios/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html

其中提到了DISPATCH_QUEUE_CONCURRENT - 但是,我认为这仅用于创建自己的队列时 - 我原本没有意识到这一点

3 个答案:

答案 0 :(得分:2)

应该是

let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

所有全局队列

#define DISPATCH_QUEUE_PRIORITY_HIGH        2
#define DISPATCH_QUEUE_PRIORITY_DEFAULT     0
#define DISPATCH_QUEUE_PRIORITY_LOW         (-2)
#define DISPATCH_QUEUE_PRIORITY_BACKGROUND  INT16_MIN

答案 1 :(得分:2)

dispatch_get_global_queuelong作为第一个参数,而不是dispatch_queue_attr_t作为NSObject。

dispatch_queue_t dispatch_get_global_queue( long identifier, unsigned long flags);

如文档中所述,您可以指定Check This Image值,或者如果您的iOS版开发> = 8.0,则可以使用QOS_CLASS_USER_INTERACTIVE, QOS_CLASS_USER_INITIATED, QOS_CLASS_UTILITY, or QOS_CLASS_BACKGROUND

dispatch_queue_priority_t

答案 2 :(得分:1)

使用此类 dispatch_queue_priority_t

中的任何一种
DISPATCH_QUEUE_PRIORITY_HIGH,
DISPATCH_QUEUE_PRIORITY_DEFAULT,
DISPATCH_QUEUE_PRIORITY_LOW,
DISPATCH_QUEUE_PRIORITY_BACKGROUND 

有关队列的更多信息:

参考http://www.appcoda.com/ios-concurrency/

希望它会对你有所帮助:)。