iOS开发基础知识

dispatch_group_async

2019-02-26  本文已影响0人  永远保持一颗进取心

这个是可以实现异步执行多个 block, 执行完之后执行某个Block的场景。
例如:需要加载完毕多张图片之后才显示。


#import "Group.h"

@interface Group()

@property (nonatomic, strong) dispatch_queue_t concQueue;
@property (nonatomic, strong) NSMutableArray *urlArray;

@end

@implementation Group

- (instancetype)init {
    if(self = [super init]) {
        //创建并发队列f
        _concQueue = dispatch_queue_create("concurrent_queue", DISPATCH_QUEUE_CONCURRENT);
        _urlArray = [NSMutableArray array];
    }
    return self;
}

- (void)handle {
    
    //创建一个 group
    dispatch_group_t group = dispatch_group_create();
    
    for(NSURL *url in _urlArray) {
        dispatch_group_async(group, _concQueue, ^{
            //图片加载
        });
    }
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
       //全部图片加载完成
    });
}

@end

上一篇 下一篇

猜你喜欢

热点阅读