实现iOS中发起异步网络请求,需要等待其返回的数据才能执行下一步操作

来源:互联网 发布:映射网络驱动器 密码 编辑:程序博客网 时间:2024/06/06 01:50

项目中需求,需要发起一个异步网络请求,等待请求数据回来后才可以进行之后的操作。

首先,定义一个BOOL类型的requestEndFlag,当网络数据回来的时候将endFlag置为YES,然后将下面的代码粘贴到网络请求的下方即可。如果网络请求一直没回来,你会发现运行的代码会一直在执行卡在下面的代码块中,并且不会卡住UI画面。

- (void)waitingRequestEnd{    if ([NSThread currentThread] == [NSThread mainThread]) {        while (!requestEndFlag) {             [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.3]];        }    } else {        @autoreleasepool {            while (requestEndFlag) {                [NSThread sleepForTimeInterval:0.3];            }        }    }}

0 0