Grand Central Dispatch (GCD) 框架的Swift封装,支持方法链式调用。
这是否令人厌倦了?
dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) { () -> Void in
for index in 1...UInt64.max{
print(index)
}
dispatch_async(dispatch_get_main_queue(), { () -> Void in
print("Back to main thread")
})
}
使用Run
Run.background { () -> Void in
for index in 1...UInt64.max{
print(index)
}
}.main { () -> Void in
print("Back to main thread")
}
支持的队列
Run.main {}
Run.userInteractive {}
Run.userInitiated {}
Run.utility {}
Run.background {}
队列链式调用
Run.main { () -> Void in
print("main queue")
}.background { () -> Void in
print("background queue")
}.userInitiated { () -> Void in
print("userInitiated queue")
}.main { () -> Void in
print("Back to main thread")
}
存储块引用以进行链式调用
let longRunningBlock = Run.background{
for index in 1...UInt64.max{
print(index)
}
}
longRunningBlock.main{
print("Back to main thread")
}
您还可以取消正在运行的过程
longRunningBlock.cancel()
或等待其完成
longRunningBlock.wait()
print("Continue..")
Run在MIT许可证下发布。有关详细信息,请参阅LICENSE。