现在的位置: 首页 > 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给大家简单的介绍了一些,希望大家多看看。


  

抱歉!评论已关闭.