我在调度异步 block 中编写了一段代码。如下:
dispatch_queue_t queue= dispatch_queue_create("action1", NULL);
dispatch_async(queue, ^{
[self method1];
[self method2];
[self method3];
dispatch_async(dispatch_get_main_queue(), ^{
//Update UI
});
});
现在,如果我想在主线程上执行 method3 怎么办?只需使用
- (void) method3
{
dispatch_async(dispatch_get_main_queue(), ^{
//Do method 3 on main thread
});
}
这是正确的方法吗?我只希望在我的 UI 更新之前先执行方法 1 2 和 3,并且需要在主线程上执行方法 3。
Best Answer-推荐答案 strong>
是的,这很好。诚然,让方法 3 向主队列分派(dispatch)一些东西感觉是多余的,只是让调用第三种方法的例程然后转身向主队列分派(dispatch)其他东西。这可能没问题(我可以构建精确地做到这一点合乎逻辑的场景)。向主线程分派(dispatch)两次是否有意义完全取决于这两个 block 正在执行什么,但如果没有一点上下文,感觉有点多余。
但撇开这一点不谈,创建队列、向其分派(dispatch)代码、然后将最后一部分代码分派(dispatch)回主线程的代码并没有错。这是一种非常常见的模式。
关于ios - 大中央调度嵌套,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/28298305/
|