GCD-Swift 3 常見用法

Swift 是完美支持GCD的,由于Swift的發(fā)展寫法也一直在變動,下面列舉一些常見的用法。

全局隊列異步執(zhí)行

print("before" + "\(Thread.current)")
// 全局隊列異步執(zhí)行
DispatchQueue.global().async {
    sleep(1)
    print("asyncTask" + "\(Thread.current)")
}
// 全局隊列同步執(zhí)行
DispatchQueue.global().sync {
    print("syncTask" + "\(Thread.current)")
}
print("after" + "\(Thread.current)")

// 執(zhí)行結(jié)果
before<NSThread: 0x600000262d80>{number = 1, name = main}
syncTask<NSThread: 0x600000262d80>{number = 1, name = main}
after<NSThread: 0x600000262d80>{number = 1, name = main}
asyncTask<NSThread: 0x608000265b00>{number = 3, name = (null)}

可以看出同步執(zhí)行時并沒有重新開辟線程

GCD 常用模板

print("before" + "\(Thread.current)")

// 全局異步
DispatchQueue.global().async {
    print("task" + "\(Thread.current)")
    //主線程異步執(zhí)行 刷新UI
    DispatchQueue.main.async {
        print("UI - task" + "\(Thread.current)")
    }
}
print("after" + "\(Thread.current)")

// 打印結(jié)果
before<NSThread: 0x60800007d780>{number = 1, name = main}
after<NSThread: 0x60800007d780>{number = 1, name = main}
task<NSThread: 0x608000268e40>{number = 3, name = (null)}
UI - task<NSThread: 0x60800007d780>{number = 1, name = main}

日常使用以上模板足夠了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 盡管 Grand Central Dispatch (GCD)已經(jīng)存在一段時間了,但并非每個人都知道怎么使用它。這...
    coderFamer閱讀 7,570評論 1 16
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,847評論 4 61
  • 在這篇文章中,我將為你整理一下 iOS 開發(fā)中幾種多線程方案,以及其使用方法和注意事項。當(dāng)然也會給出幾種多線程的案...
    張戰(zhàn)威ican閱讀 700評論 0 0
  • 學(xué)習(xí)多線程,轉(zhuǎn)載兩篇大神的帖子,留著以后回顧!第一篇:關(guān)于iOS多線程,你看我就夠了 第二篇:GCD使用經(jīng)驗與技巧...
    John_LS閱讀 741評論 0 3
  • 5月20/21的二建考試,在長沙的這四天讓我越來越想回來了,整個空氣中都透露出熟悉的味道。但對于職業(yè)的選擇讓我越來...
    0890b13f3465閱讀 141評論 0 0

友情鏈接更多精彩內(nèi)容