swift 2.0 和 3.0的多线程的区别
swift 2.0多线程的基础使用
dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
print("加载数据", [NSThread.currentThread()])
dispatch_async(dispatch_get_main_queue(), { () -> Void in
callBack()
})
}
swift 3.0 多线程
//最常用模板
//全局队列异步执行
DispatchQueue.global().async {
//耗时操作
DispatchQueue.main.async {
//回到主线程
}
}
//创建新队列
DispatchQueue(label: "newQueue", attributes: .concurrent, target: nil).async {
//并行队列异步执行
}
//创建新队列
DispatchQueue(label: "newQueueAsync", attributes: .concurrent, target: nil).async {
//并行队列异步执行
}
//创建新队列
DispatchQueue(label: "newQueueSync", attributes: .concurrent, target: nil).sync {
//并行队列同步执行
}
//创建新队列
DispatchQueue(label: "newQueueAsync").async {
//串行队列异步执行
}
//创建新队列
DispatchQueue(label: "newQueueAsync").async {
//串行队列异步执行
}
let delay:TimeInterval = 3
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay) {
//3秒后在主线程执行
}
dispatch_block_t在swift3.0已经没了
dispatch_block_t等价于() -> void
dispatch_queue_t等价于DispatchQueue