Swift3.0 / swift2.3中dispatch_group的使用

来源:互联网 发布:团购用什么软件 编辑:程序博客网 时间:2024/05/22 03:29

在项目开发中有时候需要把一些循环执行的异步操作加入到group中,让彻底循环完之后再进行下一步操作,直接上代码

创建一个组

swift2.3:let group = dispatch_group_create()swift3.0:let group = DispatchGroup()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

循环加载数据

swift2.3:for _ in array.count {    //将当前的下载操作添加到组中    dispatch_group_enter(group)    //在这里异步加载任务    //离开当前组    dispatch_group_leave(group)}swift3.0:for _ in array {    //将当前的下载操作添加到组中    group.enter()    //在这里异步加载任务    //离开当前组    group.leave()}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

全部加载完后通过闭包通知调用者

swift2.3:dispatch_group_notify(group, dispatch_get_main_queue()) { () -> Void in    //在这里告诉调用者,下完完毕,执行下一步操作}swift3.0:group.notify(queue: DispatchQueue.main) {     //在这里告诉调用者,下完完毕,执行下一步操作}////////////////////////////////////////////////////////////////////////////////

    let group = DispatchGroup()

            

            let queue = DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default)

            queue.async(group: group) {

                self.loadADData()

            }

            queue.async(group: group) {

                self.loadNewFoodEachDay(0, pageSize: 10)

            }

            

            group.notify(queue: queue) {

                self.loadRecommandInfo()

                

            }

0 0
原创粉丝点击