美文网首页
iOS异步转同步操作

iOS异步转同步操作

作者: 扯淡的青春_ | 来源:发表于2018-07-22 22:20 被阅读0次

异步方法同步执行

1.dispatch_group

- (NSInteger)methodSyncDispatchGroup
{
    __block NSInteger result = 0;
    dispatch_group_t group = dispatch_group_create();
    dispatch_group_enter(group);
    [self methodAsync:^(NSInteger value) {
        result = value;
        dispatch_group_leave(group);
    }];
    dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
    return result;
}

2.dispatch_semaphore

- (NSInteger)methodSyncSemaphore
{
    __block NSInteger result = 0;
    dispatch_semaphore_t sema = dispatch_semaphore_create(0);
    [self methodAsync:^(NSInteger value) {
        result = value;
        dispatch_semaphore_signal(sema);
    }];
    dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
    return result;
}

相关文章

  • iOS异步转同步操作

    异步方法同步执行 1.dispatch_group 2.dispatch_semaphore

  • IOS简单的异步转同步操作

    曾遇到的问题:封装SDK中的某个接口时需要上传地理位置,而获取地理位置与网络请求是个异步操作,也就是说当地理位置拿...

  • IOS多线程总结

    目录 简述 NSThread GCD操作与队列异步操作并行队列同步操作并行队列同步操作串行队列异步操作串行队列队列...

  • vuex dispatch和commit 的区别

    dispatch:异步操作,commit :同步操作 为什么dispatch是异步而commit是同步呢? 首先,...

  • Promise--异步的解决方案

    Promise 对象是 JavaScript 的异步操作解决方案,为异步操作提供统一接口,使得异步操作具备同步操作...

  • vue store 存储 dispatch 和 commit的区

    dispatch: 含有异步操作 存储: 取值: commit:同步操作 存储: 取值:

  • 2018-06-19

    commit=>mutations,用来触发同步操作的方法。 dispatch =>actions,用来触发异步操...

  • iOS 多线程基础

    转自:iOS 多线程基础 - 简书 多线程同步和异步的区别?IOS中如何实现多线程的同步? 异步:可以同时执行多条...

  • 异步编程方法

    前言 同步与异步最直观的理解:等到操作执行完成才返回执行结果的是同步操作;反之,则是异步操作 传统的异步编程方法:...

  • Es6promise的用法

    Promise 的基本用法 Promise是异步编程的一种解决方案,Promise的优缺点优点将异步操作以同步操作...

网友评论

      本文标题:iOS异步转同步操作

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