OC版
dispatch_group_t group = dispatch_group_create(); //创建一个组
dispatch_group_enter(group); //启动一个锁
dispatch_group_enter(group); //启动两个锁 (需要几个写几个)
dispatch_group_notify(group, dispatch_get_main_queue(), ^{ // 等待完成通知 所有的锁leave之后调用这里
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() //创建一个组
group.enter() //启动一个锁
group.enter() //启动两个锁 (需要几个写几个)
group.notify(queue: DispatchQueue.main) { // 等待完成通知 所有的锁leave之后调用这里
print("所有请求都完成了,爱干啥干啥")
}
netWork { (res) in //第一个请求 (伪代码)
group.leave() //第一个请求完成 退出锁
}
netWork { (res) in //第二个请求 (伪代码)
group.leave() //第儿个请求完成 退出锁
}
注意: enter 和 leave 是要成对出现的
网友评论