应用场景
iOS 机制规定,当处理 UI 事件时,需要在主线程中进行,比如刷新页面,添加控件等。
若把一些计算等耗时操作在子线程处理完成后,再回到主线程处理 UI 事件时,需要先切换到主线程。
核心逻辑/代码
保证 UI 事件在主线程中执行,可以直接使用 DispatchQueue.main.async{}
处理。
这里在使用这个代码之前先用Thread.current.isMainThread
判断当前线程是否已经是主线程,如果不是,再调用DispatchQueue.main.async{}
执行 UI 事件。
这样的处理,是为了减少不必要的线程切换的开支
示例代码
func UIEventAtMain() {
// 判断当前线程是否是主线程
if Thread.current.isMainThread {
// UI 事件
} else {
// 切换到 main 线程,处理
DispatchQueue.main.async {
UIEventAtMain()
// 结束事件,防止造成递归循环
return
}
}
}
原文地址:https://www.cnblogs.com/shsuper
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。