两个长时间运行的任务,一个使用GCD的更新线程

时间:2012-11-07 19:04:31

标签: ios grand-central-dispatch

我试图更新分组的tableview。有一个过滤器,所以有时数据不会显示在第二部分。数据始终显示在第一部分中。因为查询需要一段时间,所以我试图将内容放在后台,然后更新主线程上的UI。我似乎无法让它工作,并且想知道我做错了什么。基本上第一部分将正确显示数据,但第二部分根本不会显示其数据。这里有一些伪代码来说明我目前正在尝试的内容

dispatch_queue_t lowQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0);
dispatch_queue_t mainQueue = dispatch_get_main_queue();

dispatch_async(lowQueue, ^{
    // long running task for section 1

    if (filter == SHOW_SECTION_2) {
         // long running task for section 2

          dispatch_async(mainQueue, ^{
          // update main thread UI for long running task 2
          [self.tableView reloadData]; 
          });
    }

    dispatch_async(mainQueue, ^{
         // update main thread UI for long running task 1
          [self.tableView reloadData];
    });

如果我只为一个表格部分执行此操作,则可以正常工作。事实上,我需要更新两件我无法找到正确方法的事情。感谢。

编辑:我只是想尝试更新表格视图。因此,在获取数据后,我只需调用重新加载数据。

0 个答案:

没有答案