ios等待 异步回调

项目中需求,需要发起一个异步网络请求,等待请求数据回来后才可以进行之后的操作。
首先,定义一个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];  
            }  
        }  
    }  
}  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,035评论 25 709
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,307评论 30 472
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 10,652评论 1 23
  • 在中国,儿子和父亲的关系向来微妙,有的时候像兄弟,有的时候像仇人,有的时候更像路人… 可能是因为“棍棒出孝子”的教...
    案板街阅读 4,744评论 0 0
  • 我要感谢我的小舅舅,让我有了这样一次与牛粪亲密接触的机会。 高中时代,我和表弟表妹们因为上学都寄住在小舅舅家,他们...
    丢了朵朵阅读 4,160评论 0 4