DispatchWorkItem

1,692 阅读1分钟

在 swift4.0中使用DispatchWorkItem代替了原来OC中的dispatch_block_t

DispatchQueue执行操作,直接传入一个() -> Void 类型的闭包外,还可以传入一个DispatchWorkItem任务对象,DispatchWorkItem初始化方法可以配置Qos和DispatchWorkItemFlags,但是这两个参数都有默认值,所以也可以只传入一个闭包。

基本使用方法

let item = DispatchWorkItem{          
//这里可以添加要执行的任务 可以添加多个
Thread.sleep(forTimeInterval: 2)        
}     
let createGlobal = DispatchQueue(label: "com.HomeImageDownload.test", qos: .default, attributes: .concurrent)        
///异步执行        
createGlobal.async {
item.perform()
}        
///执行完毕添加通知        
item.notify(queue: createGlobal) {          
   DispatchQueue.main.async {            
    //更新UI          
    }
}
`DispatchWorkItem`也有`wait`方法使用方法和`DispatchGroup`一样,调用会等待这个`WorkItem`执行完毕。会阻塞当前线程。

也可以使用cancel()提前取消任务。

如果文章中有不对的地方请在评论区指出,万分感谢!