現在的位置: 首頁 > 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給大家簡單的介紹了一些,希望大家多看看。


  

抱歉!評論已關閉.

奔驰宝马破解版下载 内蒙古快3今天中奖号码 精准一头一尾中特平台大全 云南快乐十分开前三组遗漏 招商证劵智远理财平台 基金配资地址 青海体彩11任选5 北海期货配资 河北排列七历史数据 天津福彩快乐10分钟玩法 彩票湖北30选5开奖 澳门五分彩定位胆技巧 福建11选5预测 山西中国体育彩票11选5 海南够力七星彩排列五软件 江西快3开奖结果走势 江西十一选五一定牛