SwiftUI一招让List巨量数据刷新UI速度快100+倍

在这里插入图片描述



问题现象

SwiftUI中,若List中包含大量数据,当更新数据时界面会发生严重卡顿。

前两张图分别演示了在2k条数据下,未优化时需要8.29秒,而优化后只需要0.07秒,相差有118倍之多。

后两张图演示了在2w和10w条数据下,优化后的表现。可以看到即使数据达到10w条,更新也不会超过1秒钟,可谓相当惊人。



问题分析

1. List数据变化时List如何刷新?

SwiftUI中使用的是“差异”比较的方式来刷新界面。

因为SwiftUI是以状态驱动的,所有的数据更新都会自动触发UI的刷新。

在List内部的数据发生变化时,SwiftUI会尝试区分数据更新之前和之后的差异,确定差异部分后,会将更改后的行移动到新的位置, 从而完成界面的刷新。

这是一

猜你喜欢

转载自blog.csdn.net/mydo/article/details/106954243