用信號量就可以解決:
dispatch_semaphore_t semaphore = dispatch_semaphore_create(1);
dispatch_queue_t quene = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//任務(wù)1
dispatch_async(quene, ^{
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
[self loadDetailData]; //請求A
dispatch_semaphore_signal(semaphore);
});
//任務(wù)2
dispatch_async(quene, ^{
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
[self loadHotCommentData]; //請求B
dispatch_semaphore_signal(semaphore);
});
//任務(wù)3
dispatch_async(quene, ^{
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
[self loadHotCommentData]; //請求C
dispatch_semaphore_signal(semaphore);
});
//任務(wù)4
dispatch_async(quene, ^{
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
[self loadHotCommentData]; //請求D
dispatch_semaphore_signal(semaphore);
});
注意:Google一下 “ iOS convert async to sync ” 注意用信號量的方式篡腌,異步轉(zhuǎn)同步后的方法只能在子線程調(diào)用学歧,不然會阻塞主線程
參考鏈接:http://www.cocoachina.com/bbs/read.php?tid-1689119-page-2.html