[教學] Swift 單線程 多線程 範例 GCD

Swift

Grand Central Dispatch(GCD)
也就是很常使用的多線程or單線程
也是同步與異步 這幾種說法

這邊就介紹一般的簡易用法

async 是非同步 或是多線程
所有任務一起執行
一群大媽一起衝進廁所

sync 是同步 或是單線程
任務排序進行
一群大媽排隊進廁所

使用方法如以下程式碼
global通常是使用在資料的運用

var testStr : String = "1"
DispatchQueue.global(qos: .userInitiated).async {
    testStr = "2"
}

資料以外的UI更新
請用main更新
如以下程式碼

DispatchQueue.main.async {
    self.dateLabel.text = testStr
}

兩樣合體
又要改變數 又要改UI
結構如下
應該蠻簡單的
async與sync 自行更換兩種型態

var testStr : String = "1"
DispatchQueue.global(qos: .userInitiated).async {
    testStr = "2"
    DispatchQueue.main.async {
        self.dateLabel.text = testStr
    }
}

OC

轉譯過來應該是這樣
可以比對一下

NSString * testStr = "1";
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
    NSString * testStr = "2";
    dispatch_async(dispatch_get_main_queue(), ^{
        self.dateLabel.text = testStr;
    });
});

延遲宣告

如果要延遲宣告一些func
可以用以下程式碼

DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: {
    self.addView()
})

Swift更多文章

Swift 彈出視窗 AlertController 的使用方法 💥

Swift 判斷螢幕方向 📱

Swift Core Data 實現 💾🔥

Swift UISegmentedControl 💻分段控制器!

Swift 實現抽屜效果 🧹

Categorized in: