swift中的使用案例樣式
// Mark: -數據源更新
typealias AddDataBlock = () ->Void
var updataBlock:AddDataBlock?
func loadLiveData(){
let grpup = DispatchGroup()
grpup.enter()
// //首頁直播接口請求
HomeLiveProvider.request(.liveList) { result in
if case let .success(response) = result {
//解析數據
let data = try? response.mapJSON()
let json = JSON(data!)
if let mappedObject = JSONDeserializer<HomeLiveModel>.deserializeFrom(json: json.description) { // 從字符串轉換為對象實例
self.lives = mappedObject.data?.lives
self.categoryVoList = mappedObject.data?.categoryVoList
// self.collectionView.reloadData()
// 更新tableView數據
// self.updataBlock?()
grpup.leave()
}
}
}
grpup.enter()
// //首頁直播滾動圖接口請求
HomeLiveProvider.request(.liveBannerList) { result in
if case let .success(response) = result {
//解析數據
let data = try? response.mapJSON()
let json = JSON(data!)
if let mappedObject = JSONDeserializer<HomeLiveBanerModel>.deserializeFrom(json: json.description) { // 從字符串轉換為對象實例
self.homeLiveBanerList = mappedObject.data
// let index: IndexPath = IndexPath.init(row: 0, section: 1)
// self.collectionView.reloadItems(at: [index])
// 更新tableView數據
// self.updataBlock?()
grpup.leave()
}
}
}
grpup.enter()
// //首頁直播排行榜接口請求
HomeLiveProvider.request(.liveRankList) { result in
if case let .success(response) = result {
//解析數據
let data = try? response.mapJSON()
let json = JSON(data!)
if let mappedObject = JSONDeserializer<HomeLiveRankModel>.deserializeFrom(json: json.description) { // 從字符串轉換為對象實例
self.multidimensionalRankVos = mappedObject.data?.multidimensionalRankVos
// let index: IndexPath = IndexPath.init(row: 0, section: 2)
// self.collectionView.reloadItems(at: [index])
// 更新tableView數據
// self.updataBlock?()
grpup.leave()
}
}
}
grpup.notify(queue: DispatchQueue.main) {
self.updataBlock?()
}
}
oc中的使用樣式
//一個並發隊列
dispatch_queue_t queueE = dispatch_queue_create("group.queue", DISPATCH_QUEUE_CONCURRENT);
//一個線程組
dispatch_group_t groupE = dispatch_group_create();
////1.請求輪播圖的數據
dispatch_group_async(groupE, queueE, ^{
dispatch_group_enter(groupE);
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[self requestCarousel:^{
dispatch_group_leave(groupE);
}];
});
});
////2.請求新聞輪播圖的數據
dispatch_group_async(groupE, queueE, ^{
dispatch_group_enter(groupE);
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[self requestNews:^{
dispatch_group_leave(groupE);
}];
});
});
////3.校園活動【師生展評】
dispatch_group_async(groupE, queueE, ^{
dispatch_group_enter(groupE);
dispatch_async(dispatch_get_global_queue(0, 0), ^{
//3.校園活動【師生展評】
[self requestCampAcitivetis:^{
dispatch_group_leave(groupE);
}];
});
});
////4.尾部視圖
dispatch_group_async(groupE, queueE, ^{
dispatch_group_enter(groupE);
dispatch_async(dispatch_get_global_queue(0, 0), ^{
//3.尾部視圖
[self requestClass:^{
dispatch_group_leave(groupE);
}];
});
});
dispatch_group_notify(groupE, dispatch_get_main_queue(), ^{
//staticWeakSelf 隨情況而定
[staticWeakSelf setUpUI];
});
//1.請求輪播圖的數據
- (void)requestCarousel:(void(^)(void))leveBlock{
[AFHTTPRequestManager reqesutSuccess{
if (leveBlock) {
leveBlock();
}
} requestFaliure{
if (leveBlock) {
leveBlock();
}
}
}
