需求
<ol>
<li>下载.mp3文件</li>
<li>下载歌词文件</li>
<li>播放音乐的同时显示歌词</li>
</ol>
这个需求里面下载歌词和.mp3文件是两个不同的异步的网络请求,需求3的需求是在完成1,2的前提下才可以完成
方案
<ol>
<li>使用dispatch_group_t
</li>
</ol>
- 歌词
group = dispatch_group_create();
dispatch_group_enter(group);
_manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration ephemeralSessionConfiguration]];
[_manager POST: lyric.url parameters:newParm progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject)
{
dispatch_group_leave(group);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
// 提示下载失败
}];
- mp3文件
dispatch_group_enter(group);
_manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration ephemeralSessionConfiguration]];
[_manager POST: mp3.url parameters:newParm progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject)
{
dispatch_group_leave(group);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
// 提示下载失败
}];
- 都下载完毕
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
// 开始播放
});