1.Block内部执行完才走后续的代码 2.多次请求完成才执行代码

来源:互联网 发布:淘宝客店铺做裂变 编辑:程序博客网 时间:2024/05/15 06:37

1.使用信号量

    //先创建一个semaphore    dispatch_semaphore_t semaphore = dispatch_semaphore_create(1);    __block NSMutableArray *modelArr = [[NSMutableArray alloc]init];        DataBaseTool *tool = [DataBaseTool sharedInstance];    [tool inDatabase:^(FMDatabase *db) {        FMResultSet *set = [db executeQuery:@"select * from user_data where redid = ?",redid];        while ([set next]) {            UserModel *model = [[UserModel alloc]init];            model.userid = [set stringForColumnIndex:1];            model.redid = [set stringForColumnIndex:2];            model.status = [set doubleForColumnIndex:3];            [modelArr addObject:model];        }        [set close];        //发出已完成的信号        dispatch_semaphore_signal(semaphore);    }];        //等待执行,不会占用资源    dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);    return modeler;

2.使用dispatch_group

dispatch_group_t downloadGroup = dispatch_group_create();//成对出现 任务开始时dispatch_group_enter(downloadGroup);//成对出现 任务结束时dispatch_group_leave(downloadGroup);dispatch_group_notify(downloadGroup, dispatch_get_main_queue(), ^{    });


0 0
原创粉丝点击