如何使用GCD提高性能

时间:2015-03-25 07:11:26

标签: ios iphone multithreading grand-central-dispatch

我有这种情况需要从用户登录时从五个不同的表中获取数据我正在正常获取数据所以需要更多时间来获取数据(在我的情况下是1分钟),如何通过使用来提高性能GCD。任何人都可以帮助我吗?

5 个答案:

答案 0 :(得分:0)

尝试编写提取数据代码,例如方法调用,以便在

中获取数据
dispatch_async(dispatch_get_main_queue(), ^{
                [self performSelector:@selector(getItemsFromWebservice) withObject:nil afterDelay:0];
            });

答案 1 :(得分:0)

尝试使用此代码获取数据。我认为它可以帮助你。

dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
                dispatch_async(q, ^
                               {
                                   [self yourMethod];
                               });

答案 2 :(得分:0)

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
    //Fetch data from one table
    dispatch_async(dispatch_get_main_queue(), ^{
        //Update UI
    });
});

使用它五次。这将获得一个全局并发队列。因此,五个获取任务将同时执行。

答案 3 :(得分:0)

创建一个服务,通过一个http请求获取所有信息。这是最好的解决方案,如果适用的话。

答案 4 :(得分:0)

    dispatch_group_t group = dispatch_group_create();

    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^ {
        [self fetchMethod1];
    });
    //......
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^ {
        [self fetchMethod5];
    });

    dispatch_group_notify(group, dispatch_get_main_queue(), ^ {
        // update UI
    });