Swift-主线程处理 UI 事件

应用场景

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
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容