<tbody id="xj1oc"></tbody>

    <bdo id="xj1oc"></bdo><bdo id="xj1oc"><optgroup id="xj1oc"><thead id="xj1oc"></thead></optgroup></bdo>

    現在的位置: 首頁 > web前端 > 正文

    dispatch代碼怎么寫

    2020年07月21日 web前端 ⁄ 共 1152字 ⁄ 字號 評論關閉

      之前已經介紹了dispatch_semaphore的底層實現,dispatch_group的實現是基于前者的。在看源碼之前,我們先看一下我們是如何應用的。假設有這么場景:有一個A耗時操作,B和C兩個網絡請求和一個耗時操作C當ABC都執行完成后,刷新頁面。我們可以用dispatch_group實現。


      dispatch關鍵如下:


      -(void)viewDidLoad{


      [superviewDidLoad];


      __blockNSIntegernumber=0;


      dispatch_group_tgroup=dispatch_group_create();


      //A耗時操作


      dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{


      sleep(3);


      number+=2222;


      });


      dispatch的代碼


      //B網絡請求


      dispatch_group_enter(group);


      [selfsendRequestWithCompletion:^(idresponse){


      number+=[responseintegerValue];


      dispatch_group_leave(group);


      }];


      //C網絡請求


      dispatch_group_enter(group);


      [selfsendRequestWithCompletion:^(idresponse){


      number+=[responseintegerValue];


      dispatch_group_leave(group);


      }];


      dispatch_group_notify(group,dispatch_get_main_queue(),^{


      NSLog(@"%zd",number);


      });


      }


      -(void)sendRequestWithCompletion:(void(^)(idresponse))completion{


      //模擬一個網絡請求


      dispatch_queue_tqueue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);


      dispatch_async(queue,^{


      sleep(2);


      dispatch_async(dispatch_get_main_queue(),^{


      if(completion)completion(@1111);


      });


      });


      }


      總之,dispatch給大家簡單的介紹了一些,希望大家多看看。


      

    抱歉!評論已關閉.

    黄色电影网址