iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 8
0
自我挑戰組

IOS app開發介紹系列 第 8

IOS app開發介紹 - IOS一些重要的概念與機制(4. Multi-threads)

  • 分享至 

  • xImage
  •  

IOS app通常會使用multi-threads來處理app的運作,一條thread可以當作一個工人,同時間只能做一件事,多個thread就等於有多個工人,可以同時做多件事。

IOS mutlithread特性:
- 通常不直接fork thread,較常用Queue去管理
ex: DispatchQueue.main.async { .... }
- Main thread負責所有UI updates

IOS提供以下方法讓我們來使用mutli-threads:

  • Queueing with Grand Central Dispatch

*. Queueing with Grand Central Dispatch

當我們希望用main thread去更新UI,我們只需要用 DispatchQueue.main.async { update UI code }來確保更新UI的code是在main thread下執行
若是下載資料等長時間的任務,我們不能夠用main thread來執行,否則會導致使用者操作app時,UI無法及時刷新導致不好的使用者體驗(在Android稱這種狀況為ANR - Application Not Responding),所以我們要用DispatchQueue.global().async { long task code }方法來讓長時間的任務在非main thread中執行
以下為範例:

DispatchQueue.global().async {   //非main thread負責下載資料
  downloadData() {
      (data) -> Void in
         DispatchQueue.main.async {  //main thread負責更新UI
        // Update the UI  
    }
  }
}

ref: https://learnappmaking.com/grand-central-dispatch-swift/


上一篇
IOS app開發介紹 - IOS一些重要的概念與機制(3. Closure)
下一篇
IOS app開發介紹 - IOS一些重要的概念與機制(5. 背景執行)
系列文
IOS app開發介紹22
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言