• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 大中央调度嵌套

[复制链接]
菜鸟教程小白 发表于 2022-12-13 10:15:48 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在调度异步 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-推荐答案


是的,这很好。诚然,让方法 3 向主队列分派(dispatch)一些东西感觉是多余的,只是让调用第三种方法的例程然后转身向主队列分派(dispatch)其他东西。这可能没问题(我可以构建精确地做到这一点合乎逻辑的场景)。向主线程分派(dispatch)两次是否有意义完全取决于这两个 block 正在执行什么,但如果没有一点上下文,感觉有点多余。

但撇开这一点不谈,创建队列、向其分派(dispatch)代码、然后将最后一部分代码分派(dispatch)回主线程的代码并没有错。这是一种非常常见的模式。

关于ios - 大中央调度嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28298305/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap