1. 程式人生 > >Swift3.0 /Swift2.3——dispatch_group的使用

Swift3.0 /Swift2.3——dispatch_group的使用

在專案開發中有時候需要把一些迴圈執行的非同步操作加入到group中,讓徹底迴圈完之後再進行下一步操作

建立一個組

//swift2.3:
let group = dispatch_group_create()

//swift3.0:
let group = DispatchGroup()

迴圈載入資料

//swift2.3:
for _ in array.count {

    //將當前的下載操作新增到組中
    dispatch_group_enter(group)

    //在這裡非同步載入任務

    //離開當前組
    dispatch_group_leave(group)
}

//swift3.0:
for _ in array {

    //將當前的下載操作新增到組中
    group.enter()

    //在這裡非同步載入任務

    //離開當前組
    group.leave()
}

全部載入完後通過閉包通知呼叫者

//swift2.3:
dispatch_group_notify(group, dispatch_get_main_queue()) { () -> Void in

    //在這裡告訴呼叫者,下完完畢,執行下一步操作
}

//swift3.0:
group.notify(queue: DispatchQueue.main) { 
    //在這裡告訴呼叫者,下完完畢,執行下一步操作
}