美文网首页
iOS为什么更新UI操作必须在主线程

iOS为什么更新UI操作必须在主线程

作者: 赵哥窟 | 来源:发表于2020-06-24 17:50 被阅读0次

UIKit不是线程安全的,假如在两个线程中设置了同一张背景图片,很有可能就会由于背景图片被释放两次,使得程序崩溃。或者某一个线程中遍历找寻某个subView,然而在另一个线程中删除了该subView,那么就会造成错乱。

UI操作涉及到渲染访问各种View对象的属性,如果是异步操作会有读写问题。加锁呢,性能损耗大。所以主线程操作UI。

子线程是否可以更新UI

1.事实上在子线程中如果要对其他UI 进行更新,必须等到该子线程运行结束。因为子线程代码执行完毕了,又自动进入到了主线程。执行了子线程中的UI更新的函数栈,这中间的时间非常的短,就让大家误以为分线程可以更新UI。如果子线程一直在运行,则子线程中的UI更新的函数栈主线程无法获知,即无法更新

2.只有极少数的UI能,因为开辟线程时会获取当前环境,如点击某个按钮,这个按钮响应的方法是开辟一个子线程,在子线程中对该按钮进行UI更新是能及时的。

相关文章

网友评论

      本文标题:iOS为什么更新UI操作必须在主线程

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