你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS中多個網絡請求問題

IOS中多個網絡請求問題

編輯:IOS開發綜合

在多線程中,有時候我們會遇到一個界面同時有多個網絡請求(比如a,b,c,d四個網絡請求),在這四個個請求結束後,在請求到數據去做其他操作(UI更新等) 在IOS的多線程解決方案中,GCD為我們提供了一種解決方案:dispatch_group 和信號量

//創建信號量

dispatch_semaphore_tsemaphore =dispatch_semaphore_create(0);

//創建一個隊列組

dispatch_group_tgrouch =dispatch_group_create();

//創建全局隊列,四個請求同時發起

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

//創建串行隊列,四個請求依次執行

//dispatch_queue_tqueue =dispatch_queue_create("queues",NULL);

dispatch_group_async(grouch, queue, ^{

NSLog(@"網絡請求a");

dispatch_semaphore_signal(semaphore);//釋放通知

});

dispatch_group_async(grouch, queue, ^{

NSLog(@"網絡請求b");

dispatch_semaphore_signal(semaphore);

});

dispatch_group_async(grouch, queue, ^{

NSLog(@"網絡請求c");

dispatch_semaphore_signal(semaphore);

});

dispatch_group_async(grouch, queue, ^{

NSLog(@"網絡請求d");

dispatch_semaphore_signal(semaphore);

});

//在所有請求都結束後,接到通知執行下面的方法

dispatch_group_notify(grouch, queue, ^{

//發起等待

dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER);

//發起等待

dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER);

//發起等待

dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER);

//發起等待

dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER);

NSLog(@"4個請求結束之後,可以在這裡操作請求的數據,或者更新UI");

});


以上就是IOS中多個網絡請求問題的全文介紹,希望對您學習和使用IOS應用開發有所幫助.

【IOS中多個網絡請求問題】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved