美文网首页
iOS执行完block块-> 再继续往下执行~

iOS执行完block块-> 再继续往下执行~

作者: 世玉茹花 | 来源:发表于2019-06-18 14:04 被阅读0次

    遇到一个需求,,,某一个操作需要请求接口获得数据再继续往下操作。但 请求接口封装在了一个工具类中,,以block 方式回调,,因为是异步会先执行主线程,以至于达不到我们想要的效果。。。

    so、

    就用到GCD Group 方式或者信号量方式来完成。

    直接上代码,,,

            dispatch_group_t group = dispatch_group_create();
            
            dispatch_group_enter(group);
            [[YWAddressDataTool sharedManager] loadRegionListid:cityItem.id with:^(NSArray *list) {
                
                
                NSLog(@"begin");
                self.districtDataSouce = list;
                
                dispatch_group_leave(group);
                
                
            }];
            
            dispatch_group_notify(group, dispatch_get_main_queue(), ^{
                NSLog(@"end");
                
                if ([indexPath0 compare:indexPath] != NSOrderedSame && indexPath0) {
                    
                    for (int i = 0; i < self.tableViews.count - 1; i++) {
                        [self removeLastItem];
                    }
                    [self addTopBarItem];
                    [self addTableView];
                    [self scrollToNextItem:cityItem.name];
                    
                    if (_seleteCodeArr.count == 2) {
                        
                        [_seleteCodeArr removeObjectAtIndex:1];
                        [_seleteCodeArr addObject:cityItem.id];
                    }
                    
                    
                } else if ([indexPath0 compare:indexPath] == NSOrderedSame && indexPath0) {
                    
                    [self scrollToNextItem:cityItem.name];
                    
                }else
                {
                    [self addTopBarItem];
                    [self addTableView];
                    YWAddressModel * item = self.cityDataSouce[indexPath.row];
                    [self scrollToNextItem:item.name];
                    
                    [_seleteCodeArr addObject:cityItem.id];
                }
                
    
            });
    

    会先打印begin,,,可以进行相关赋值等。。再打印end,继续往下操作~

                                                                                                   over~

    相关文章

      网友评论

          本文标题:iOS执行完block块-> 再继续往下执行~

          本文链接:https://www.haomeiwen.com/subject/zskfqctx.html