iOS:Block运行完毕后再进行函数返回(dispatch_semaphore)

简单说就是通过信号量来对block运算和返回操作的顺序进行控制,达到先完成block中的计算,然后再返回值的效果。

简单例子:

- (BOOL)example{

dispatch_semaphore_t signal;

signal =dispatch_semaphore_create(0);//当前signal车库中剩余0个车位

__block BOOL result;

[... completionHandler:^(BOOL blockResult, NSError *_Nullable error) {

//...

result = !blockResult;//Anything you want

dispatch_semaphore_signal(signal);//当前signal车库空出1个车位

}];

dispatch_semaphore_wait(signal,DISPATCH_TIME_FOREVER);//一直等到signal车库中有车位了,才会往下继续执行

return result;

}

对于信号量的举例解释是在其他文章看到的,觉得写得非常好所以借鉴过来自己存个根

关于dispatch_semaphore的使用(咑小僦詪酷)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Managing Units of Work(管理工作单位) 调度块允许您直接配置队列中各个工作单元的属性。它们还...
    edison0428阅读 8,032评论 0 1
  • 联系人:石虎QQ: 1224614774 昵称:嗡嘛呢叭咪哄 dispatch_semaphore是GCD用来同步...
    石虎132阅读 1,150评论 3 20
  • 1. 并行和并发 简单来说,若说两个任务A和B并发执行,则表示任务A和任务B在同一时间段里被执行(更多的可能是二者...
    Z_Han阅读 655评论 0 8
  • 原创内容,转载请注明出处: //www.greatytc.com/p/ac11fe7ef78c 前言 多线...
    抱紧我的小鲤鱼阅读 8,836评论 6 78
  • 小崽子从周日发烧到现在,在盆友的指导下,姐快变名医了。今天第三天高烧不退,去嫣然验个血,医生吧啦吧啦给说了几样药,...
    呶呶的简书阅读 128评论 0 0