在Swift 2中,我能够用以下代码创建队列:

let concurrentQueue = dispatch_queue_create("com.swift3.imageQueue", DISPATCH_QUEUE_CONCURRENT)

但是这不能在Swift 3中编译。

在Swift 3中,首选的方式是什么?


当前回答

DispatchQueue.main.async(execute: {

// write code

})

串行队列:

let serial = DispatchQueue(label: "Queuename")

serial.sync { 

 //Code Here

}

并发队列:

 let concurrent = DispatchQueue(label: "Queuename", attributes: .concurrent)

concurrent.sync {

 //Code Here
}

其他回答

DispatchQueue.main.async(execute: {

// write code

})

串行队列:

let serial = DispatchQueue(label: "Queuename")

serial.sync { 

 //Code Here

}

并发队列:

 let concurrent = DispatchQueue(label: "Queuename", attributes: .concurrent)

concurrent.sync {

 //Code Here
}

创建并发队列

let concurrentQueue = DispatchQueue(label: "queuename", attributes: .concurrent)
concurrentQueue.sync {

}  

创建一个串行队列

let serialQueue = DispatchQueue(label: "queuename")
serialQueue.sync { 

}

异步获取主队列

DispatchQueue.main.async {

}

同步获取主队列

DispatchQueue.main.sync {

}

获取一个背景线程

DispatchQueue.global(qos: .background).async {

}

Xcode 8.2 beta 2:

获取一个背景线程

DispatchQueue.global(qos: .default).async {

}

DispatchQueue.global().async {
    // qos' default value is ´DispatchQoS.QoSClass.default`
}

如果你想了解如何使用这些队列。请看这个答案

Swift 3

   DispatchQueue.main.async {
        // Write your code here
    }
   let concurrentQueue = dispatch_queue_create("com.swift3.imageQueue", DISPATCH_QUEUE_CONCURRENT) //Swift 2 version

   let concurrentQueue = DispatchQueue(label:"com.swift3.imageQueue", attributes: .concurrent) //Swift 3 version

我在Xcode 8, Swift 3中重做了你的代码,这些变化与你的Swift 2版本形成对比。

 let newQueue = DispatchQueue(label: "newname")
 newQueue.sync { 

 // your code

 }