美文网首页iOS OC 学习手册
Swift-主线程处理 UI 事件

Swift-主线程处理 UI 事件

作者: 我为双鱼狂 | 来源:发表于2021-07-13 20:45 被阅读0次

    应用场景

    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
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:Swift-主线程处理 UI 事件

        本文链接:https://www.haomeiwen.com/subject/wegjpltx.html