如果想在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)
}
}