開發(fā)中經(jīng)常碰到一個頁面需要依賴幾個接口都請求成功后再刷新UI,可以如下
? //先創(chuàng)建一個group
? ? dispatch_group_t group = dispatch_group_create();
?? // 創(chuàng)建隊列 serialQueue
? ? dispatch_queue_t? serialQueue =dispatch_queue_create("market", DISPATCH_QUEUE_SERIAL);
? ? //網(wǎng)絡(luò)請求一
? ? dispatch_group_enter(group);
? ? dispatch_group_async(group, serialQueue, ^{
? ? ? ? NSLog(@"網(wǎng)絡(luò)請求一執(zhí)行完畢");
? ? ? ? dispatch_group_leave(group);
? ? });
? ? // 網(wǎng)絡(luò)請求二
? ? dispatch_group_enter(group);
? ? dispatch_group_async(group, serialQueue, ^{
? ? ? ? ? ? NSLog(@"網(wǎng)絡(luò)請求二執(zhí)行完畢");
? ? ? ? ? ? dispatch_group_leave(group);
? ? });
? ? //請求全部結(jié)束后,更新UI
? ? dispatch_group_notify(group, serialQueue, ^{
? ? ? ? dispatch_async(dispatch_get_global_queue(0,0), ^{
? ? ? ? ? ? dispatch_async(dispatch_get_main_queue(), ^{
? ? ? ? ? ? ? ? NSLog(@"UI更新完畢");
? ? ? ? ? ? });
? ? ? ? });
? ? });
? ? //主線程不受影響
? ? NSLog(@"不卡主線程");