OC版
dispatch_group_t group = dispatch_group_create(); //創(chuàng)建一個組
dispatch_group_enter(group); //啟動一個鎖
dispatch_group_enter(group); //啟動兩個鎖 (需要幾個寫幾個)
dispatch_group_notify(group, dispatch_get_main_queue(), ^{ // 等待完成通知 所有的鎖leave之后調(diào)用這里
NSLog(@"所有請求都完成了,愛干啥干啥");
});
[BMCLHttpManager httpDownloadWithUrl:kURL1 progress:nil successful:^(NSURL *filePath) { //第一個請求
dispatch_group_leave(group); //第一個請求完成 退出鎖
} error:nil];
[BMCLHttpManager httpDownloadWithUrl:kURL2 progress:nil successful:^(NSURL *filePath) { //第二個請求
dispatch_group_leave(group); //第兒個請求完成 退出鎖
} error:nil];
swift版
let group = DispatchGroup() //創(chuàng)建一個組
group.enter() //啟動一個鎖
group.enter() //啟動兩個鎖 (需要幾個寫幾個)
group.notify(queue: DispatchQueue.main) { // 等待完成通知 所有的鎖leave之后調(diào)用這里
print("所有請求都完成了,愛干啥干啥")
}
netWork { (res) in //第一個請求 (偽代碼)
group.leave() //第一個請求完成 退出鎖
}
netWork { (res) in //第二個請求 (偽代碼)
group.leave() //第兒個請求完成 退出鎖
}
注意: enter 和 leave 是要成對出現(xiàn)的