需求
<ol>
<li>下載.mp3文件</li>
<li>下載歌詞文件</li>
<li>播放音樂的同時(shí)顯示歌詞</li>
</ol>
這個需求里面下載歌詞和.mp3文件是兩個不同的異步的網(wǎng)絡(luò)請求,需求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(), ^{
// 開始播放
});