菜鸟教程小白 发表于 2022-12-13 10:15:48

ios - 大中央调度嵌套


                                            <p><p>我在调度异步 block 中编写了一段代码。如下:</p>

<pre><code>dispatch_queue_t queue= dispatch_queue_create(&#34;action1&#34;, NULL);

dispatch_async(queue, ^{         
   ;            
   ;      
   ;

   dispatch_async(dispatch_get_main_queue(), ^{
       //Update UI
   });      
});
</code></pre>

<p>现在,如果我想在主线程上执行 method3 怎么办?只需使用 </p>

<pre><code>- (void) method3
{
    dispatch_async(dispatch_get_main_queue(), ^{
      //Do method 3 on main thread
    });
}
</code></pre>

<p>这是正确的方法吗?我只希望在我的 UI 更新之前先执行方法 1 2 和 3,并且需要在主线程上执行方法 3。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>是的,这很好。诚然,让方法 3 向主队列分派(dispatch)一些东西感觉是多余的,只是让调用第三种方法的例程然后转身向主队列分派(dispatch)其他东西。这可能没问题(我可以构建精确地做到这一点合乎逻辑的场景)。向主线程分派(dispatch)两次是否有意义完全取决于这两个 block 正在执行什么,但如果没有一点上下文,感觉有点多余。 </p>

<p>但撇开这一点不谈,创建队列、向其分派(dispatch)代码、然后将最后一部分代码分派(dispatch)回主线程的代码并没有错。这是一种非常常见的模式。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 大中央调度嵌套,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/28298305/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/28298305/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 大中央调度嵌套