objective-c - ios 想问一个很简单的异步问题
PHP中文网
PHP中文网 2017-04-17 16:42:53
[iOS讨论组]

[manager POST:@"https://www.baidu.com" parameters:@{} success:^(AFHTTPRequestOperation *operation, id responseObject) {

            NSLog(@"ok1"); 
   }       

NSLog(@"ok2");

很明显这段代码 如果打印的话 肯定是:先ok2 再ok1

有没有什么办法先ok1 再 ok2

当然不能把 NSLog(@"ok2");这句放到异步代码块之后的情况下 达到上述要求

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
高洛峰

用GCD的同步方法。。

PHP中文网

用 NSRunLoop()

伊谢尔伦

1.runloop

runloop = YES;  

[manager POST:@"https://www.baidu.com" parameters:@{} success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"ok1"); 
       runloop = NO;
   })];

while (runloop)
 {  
    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];  
 }
  
NSLog(@"ok2");  

2.GCD group

dispatch_group_t group = dispatch_group_create();
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
dispatch_group_async(group, queue , ^{
    dispatch_group_enter(group);
    [manager POST:@"https://www.baidu.com" parameters:@{} success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"ok1"); 
        dispatch_group_leave(group);
   })];
});

dispatch_group_notify(group, dispatch_get_main_queue(), ^{
    NSLog(@"ok2");   
 });
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号