即使我使用GCD,UI也会卡住

时间:2012-07-18 12:41:12

标签: ios xcode grand-central-dispatch

当我从第二个视图返回到我的mainView时,我正在处理第二个视图的viewDidDisappear方法中的内容。问题是,由于应用程序必须完成的工作,我的mainView卡住了。

以下是我的工作:

-(void)viewDidDisappear:(BOOL)animated
{
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

    dispatch_async(queue, ^{

    dbq = [[dbqueries alloc] init];

    [[NSNotificationCenter defaultCenter] postNotificationName:@"abc" object:nil];
    //the notification should start a progressView, but because the whole view gets stuck, I can't see it working, because it stops as soon as the work is done

    dispatch_sync(dispatch_get_main_queue(), ^{

    //work    

    });
});

我做错了什么? 提前谢谢!

1 个答案:

答案 0 :(得分:3)

您需要在dispatch_async的{​​{1}}内完成工作。您正在主线程中执行工作(假设queue注释就在哪里),此外您还在阻止工作线程等待此工作。

尝试稍微重新安排您的GCD通话:

// Work