Swift - reloadData 不按顺序工作吗?

Swift - Does not reloadData work in sequence?

我认为 Xcode 中的代码按顺序工作。
例如

print("1")
print("2")
print("3")

// result
// 1
// 2
// 3

但是当我调用 reloadData 时,它不能按顺序工作。

{
   ...
   collectionView.reloadData()
   print("1")
   print("2")
   ...
}

调用 reloadData 后,print("1"), ("2") 起作用。
后来调用了collectionView的dataSource方法。

我认为reloadData包括DataSource的方法和Delegate的方法。
所以,我认为,
调用reloadData后,调用dataSource的方法,print("1"), ("2").

为什么reloadData不能按顺序工作?
我没有做任何 dispatchQueue。

这是因为 运行 循环的工作方式。您的代码 运行s 在隐式交易中。您的代码结束,然后 事务自行提交。然后,作为事务提交过程的一部分,屏幕被更新:首先布局,然后绘制,然后服从层 属性 更改,然后开始任何动画。

所以基本上 reloadData 是一个排队重绘 table 视图的请求,但实际的重绘不会发生,直到您的所有代码都已停止并且事务已提交。

(将此视为与 setNeedsDisplay 平行可能会有所帮助。)