ios - 注册到消息中心的方法在哪个线程中执行?
高洛峰
高洛峰 2017-04-17 11:58:19
[iOS讨论组]

我在我的项目中单独建立了一个model类,用来进行数据请求,当数据请求成功时,发送Notification,在viewController中向消息中心注册了对应的执行方法,在这个方法中我做了隐藏MBProgressHuD的操作。但运行的时候Hud却没有隐藏掉,我通过打印日志,发现这个方法中打印的currentThread和主线程中打印的线程信息不一致。所以有几个问题想问:
1.注册到消息中心的方法可能不在主线程中执行?在什么情况下不会。
2.MBProgressHud在什么特殊情况下隐藏会出现问题?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
PHPz
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    //后台
    dispatch_sync(dispatch_get_main_queue(), ^{
        //主进程
        [hud hide:YES afterDelay:3];
    });
});
ringa_lee

解决了,在别的线程中发送的通知,对应的执行方法也是在别的线程中执行,而不是在主线程中执行。
数据请求是在其他线程中执行的,所以这个注册到消息中心的方法也是在别的线程中执行了,所以MBProgressHUD没有隐藏掉。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号