我目前正在使用目标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更新使其更具可读性。但我现在需要更新进度控件,我知道我可以通过使用委托模式来实现,但我想知道是否有一种不同的更好的方法来实现它。
有什么想法吗?
答案 0 :(得分:0)
只需使用相同的UI更新代码,只需通过dispatch_sync
调用:
// In background thread...
dispatch_sync(dispatch_get_main_queue(), ^{
// Do UI update
});