曾遇到的问题:封装SDK中的某个接口时需要上传地理位置,而获取地理位置与网络请求是个异步操作,也就是说当地理位置拿到的慢一些时,上传的地理位置会为空。
解决:在网络请求之前用下面方法让线程等待
-(void)waitObject
{
NSRunLoop*runLoop = [NSRunLoopcurrentRunLoop];
isStart=TRUE;
while(isStart==TRUE){
@autoreleasepool {
[runLooprunMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
}
}
}
当在地理位置回调后 将isStart变量置为FALSE,退出runloop接着就可以同步执行网络请求的操作了。
网友评论