swift使用dispatch_group_create()

2016-11-09  本文已影响0人  会飞的水珠

如果想在dispatch_queue中所有的任务执行完成后在做某种操作,在串行队列中,可以把该操作放到最后一个任务执行完成后继续,但是在并行队列中怎么做呢。这就有dispatch_group 成组操作。比如

        缓存图片是异步的,我要让图片都下载完,再让程序继续往下走!

//缓存图片

private func cacheImages(viewModels : [StatusViewModel]) {

// 0.创建group

              letgroup =dispatch_group_create()

// 1.缓存图片

forviewmodelinviewModels {

            forpicURLinviewmodel.picURLs{

                 dispatch_group_enter(group)

                 SDWebImageManager.sharedManager().downloadImageWithURL(picURL, options: [],                                  progress:nil, completed: { (_,_,_,_,_) ->Void in

                          dispatch_group_leave(group)

                 })

             }

}

// 2.刷新表格

dispatch_group_notify(group,dispatch_get_main_queue()) { () ->Void in

//刷新表格

self.tableView.reloadData()

//停止刷新

self.tableView.mj_header.endRefreshing()

self.tableView.mj_footer.endRefreshing()

//显示提示的Label

self.showTipLabel(viewModels.count)

}

}

上一篇下一篇

猜你喜欢

热点阅读