IOS简单的异步转同步操作

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

解决:在网络请求之前用下面方法让线程等待

-(void)waitObject

{

    NSRunLoop*runLoop = [NSRunLoopcurrentRunLoop];

    isStart=TRUE;

    while(isStart==TRUE){

        @autoreleasepool {

            [runLooprunMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];

        }

    }

}

当在地理位置回调后 将isStart变量置为FALSE,退出runloop接着就可以同步执行网络请求的操作了。

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

推荐阅读更多精彩内容