GCD 是一种非常方便的使用多线程的方式。通过使用 GCD,我们可以在确保尽量简单的语法的前提下进行灵活的多线程编程。在 “复杂必死” 的多线程编程中,保持简单就是避免错误的金科玉律。好消息是在 Swift 中是可以无缝使用 GCD 的 API 的,而且得益于闭包特性的加入,使用起来比之前在 Objective-C 中更加简单方便。在这里我不打算花费很多时间介绍 GCD 的语法和要素,如果这么做的话就可以专门为 GCD 写上一节了。在下面我给出了一个日常里最通常会使用到的例子 (说这个例子能覆盖到日常的 GCD 使用的 50% 以上也不为过),来展示一下 Swift 里的 GCD 调用会是什么样子:
// 创建目标队列 let workingQueue = dispatch_queue_create("my_queue", nil) // 派发到刚创建的队列中,GCD 会负责进行线程调度 dispatch_async(workingQueue) { // 在 workingQueue 中异步进行 print("努力工作") NSThread.sleepForTimeInterval(2) // 模拟两秒的执行时间 dispatch_async(dispatch_get_main_queue()) { // 返回到主线程更新 UI print("结束工作,更新 UI") } }
» 阅读全文