美文网首页
iOS:Block运行完毕后再进行函数返回(dispatch_s

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

作者: Sparta301 | 来源:发表于2017-10-04 12:09 被阅读0次

    简单说就是通过信号量来对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的使用(咑小僦詪酷)

    相关文章

      网友评论

          本文标题:iOS:Block运行完毕后再进行函数返回(dispatch_s

          本文链接:https://www.haomeiwen.com/subject/rzoqyxtx.html