美文网首页
为什么要在主线程操作UI

为什么要在主线程操作UI

作者: QYCD | 来源:发表于2021-07-06 21:40 被阅读0次

UIKit不是线程安全的
试想下面这几种情况:

1.两个线程同时设置同一个背景图片,那么很有可能因为当前图片被释放了两次而导致应用崩溃。
2.两个线程同时设置同一个UIView的背景颜色,那么很有可能渲染显示的是颜色A,而此时在UIView逻辑树上的背景颜色属性为B。
3.两个线程同时操作view的树形结构:在线程A中for循环遍历并操作当前View的所有subView,然后此时线程B中将某个subView直接删除,这就 导致了错乱还可能导致应用崩溃。

UIKit并不是一个 线程安全 的类,UI操作涉及到渲染访问各种View对象的属性,如果异步操作下会存在读写问题,而为其加锁则会耗费大量资源并拖慢运行速度。另一方面因为整个程序的起点UIApplication是在主线程进行初始化,所有的用户事件都是在主线程上进行传递(如点击、拖动),所以view只能在主线程上才能对事件进行响应。而在渲染方面由于图像的渲染需要以60帧的刷新率在屏幕上 同时 更新,在非主线程异步化的情况下无法确定这个处理过程能够实现同步更新。

iOS 为什么必须在主线程中操作UI
iOS拾遗——为什么必须在主线程操作UI

相关文章

  • iOS 线程与队列之间的关系

    引导问题:UI刷新,为什么需要在主线程中执行? 原因一:UIKit的操作不是线程安全的 在多个线程下进行UI操作,...

  • Android-异步操作更新UI界面的几种方法

    在Android开发中,耗时操作是比较多的,更新ui需要在主线程中,然而耗时操作是不能放在主UI线程中在执行的,因...

  • iOS-多线程初探

    线程的定义 为什么一定要在主线程刷新UI? 因为UIKit框架不是线程安全的,当在多个线程进行UI操作,有可能出现...

  • UI问题总结

    1、为什么一定要在主线程刷新UI? 安全+效率:因为UIKit框架不是线程安全的框架,当在多个线程进行UI操作,有...

  • IOS为什么在主线程刷新UI?(子线程刷新UI测试)

    为什么一定要在主线程刷新UI?安全+效率:因为UIKit框架不是线程安全的框架,当在多个线程进行UI操作,有可能出...

  • AsyncTask和线程池

    在Android中,UI操作是线程不安全的,如果想要在子线程中进行UI操作,或者在主线程中进行耗时操作,则需要借助...

  • iOS拾遗——为什么必须在主线程操作UI

    iOS拾遗——为什么必须在主线程操作UI iOS拾遗——为什么必须在主线程操作UI

  • Handler消息机制

    Android规定只允许UI线程修改Activity里面的UI组件,如果我们要在子线程中去执行更改UI的操作,会导...

  • 为什么要在主线程操作UI

    UIKit不是线程安全的试想下面这几种情况: 1.两个线程同时设置同一个背景图片,那么很有可能因为当前图片被释放了...

  • iOS中为什么刷新UI要在主线程

    刷新UI要在主线程(简单记个笔记,加深自我理解) 在iOS中,为什么刷新UI要在主线程呢,因为UIKit框架本身就...

网友评论

      本文标题:为什么要在主线程操作UI

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