委派替代方案来更新进度

时间:2014-09-01 09:01:20

标签: ios objective-c macos delegates objective-c-blocks

我目前正在使用目标C开发一个OSX项目,该项目在某种程度上具有基于块的结构,如下所示:

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
    // SYNCHRONOUS task
    dispatch_async(dispatch_get_main_queue(), ^{
        // UI update
    });
});

它非常好用,并且在代码的相同部分中使用后台任务和UI更新使其更具可读性。但我现在需要更新进度控件,我知道我可以通过使用委托模式来实现,但我想知道是否有一种不同的更好的方法来实现它。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

只需使用相同的UI更新代码,只需通过dispatch_sync调用:

// In background thread...
dispatch_sync(dispatch_get_main_queue(), ^{
    // Do UI update
});