热门搜索 :
考研考公
您的当前位置:首页正文

iOS 异步线程(冰山一角,记录一下项目中优化使用到的方法)

来源:东饰资讯网

队列组(亲测,可以的)
队列组可以将很多队列添加到一个组里,这样做的好处是,当这个组里所有的任务都执行完了,队列组会通过一个方法通知我们。下面是使用方法,这是一个很实用的功能。

//.创建队列组
dispatch_group_t group = dispatch_group_create();
//2.创建队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_async(group, queue, ^{
});
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
NSLog(@"全部完成 - %@", [NSThread currentThread]);
});

另一种:
//1.创建队列
dispatch_queue_t uploadQueue = dispatch_queue_create("refreshDbQueue", NULL);
dispatch_queue_t getMainQueue = dispatch_get_main_queue();
dispatch_async(uploadQueue, ^{
dispatch_async(getMainQueue, ^{
});
});

使用:(第一种)
(队列组可以将很多队列添加到一个组里,这样做的好处是,当这个组里所有的任务都执行完了,队列组会通过一个方法通知我们。下面是使用方法,这是一个很实用的功能)

  • (void)test{
    //1.创建队列组
    dispatch_group_t group = dispatch_group_create();
    //2.创建队列
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    //3.多次使用队列组的方法执行任务, 只有异步方法
    //3.1.执行3次循环
    dispatch_group_async(group, queue, ^{
    for (NSInteger i = 0; i < 3; i++) {
    NSLog(@"group-01 - %@", [NSThread currentThread]);
    }
    });

    //3.2.主队列执行8次循环
    dispatch_group_async(group, dispatch_get_main_queue(), ^{
    for (NSInteger i = 0; i < 8; i++) {
    NSLog(@"group-02 - %@", [NSThread currentThread]);
    }
    });
    //3.3.执行5次循环
    dispatch_group_async(group, queue, ^{
    for (NSInteger i = 0; i < 5; i++) {
    NSLog(@"group-03 - %@", [NSThread currentThread]);
    }
    });
    //4.都完成后会自动通知
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
    NSLog(@"全部完成 - %@", [NSThread currentThread]);
    });
    }
    第二种的使用是很普遍的,随便一搜多了是,不再记录!

Top