看到ObjC代码:
- (void)exChangeMessageDataSourceQueue:(void (^)())queue {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), queue);
}想要转换为swift代码
去搜:
swift dispatch_async
参考:
Grand Central Dispatch Tutorial for Swift: Part 1/2 – Ray Wenderlich
后来知道了:
dispatch_async是iOS中的线程相关的GCD下面的一个函数
-》提供了一堆方便的函数,便于我们处理多线程的任务
-》基于系统提供的API,我自己另外加了点语法糖,变成了:
/***************************************************************************
* GCD functions
***************************************************************************/
func delayDispatch(delayTimeInSec:Double, inThread:dispatch_queue_t, thingsTodo:()->()) {
let dispatchDelayTime = dispatch_time(
DISPATCH_TIME_NOW,
Int64(delayTimeInSec * Double(NSEC_PER_SEC))
)
dispatch_after(dispatchDelayTime, inThread, thingsTodo)
}
func delayDispatchInMainThread(delayTimeInSec:Double, thingsTodo:()->()) {
let mainQueue = dispatch_get_main_queue()
delayDispatch(delayTimeInSec, inThread: mainQueue, thingsTodo: thingsTodo)
}
func dispatchMain_sync(delayTimeInSec:Double = 0.0, thingsTodo:()->()) {
delayDispatchInMainThread(delayTimeInSec, thingsTodo: thingsTodo)
}
func delayDispatchInBackgroundThread(delayTimeInSec:Double, thingsTodo:()->()) {
let backgroundQueue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)
// let backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)
delayDispatch(delayTimeInSec, inThread: backgroundQueue, thingsTodo: thingsTodo)
}
func dispatchBackground_async(thingsTodo:()->()) {
let backgroundQueue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)
dispatch_async(backgroundQueue, thingsTodo)
}
func dispatchUserInitiated_async(thingsTodo:()->()) {
let userInitiatedQueue = dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)
dispatch_async(userInitiatedQueue, thingsTodo)
}
func dispatchMain_async(thingsTodo:()->()) {
let mainQueue = dispatch_get_main_queue()
dispatch_async(mainQueue, thingsTodo)
}以便于后期使用。
更多代码详见:
crifanLib/swift at master · crifan/crifanLib · GitHub
https://github.com/crifan/crifanLib/tree/master/swift
转载请注明:在路上 » 【已解决】swift中dispatch_async的含义