@MainActor
只是DispatchQueue.main.async
的句法糖,还是还有其他用途吗?
如果我们看一下UILabel
和UIViewController
的声明,我们可以看到它们都用新的@MainActor
属性进行了注释:
@MainActor class UILabel: UIView
@MainActor class UIViewController: UIResponder
这意味着,当使用 Swift 的新并发系统时,这些类(及其任何子类)上的所有属性和方法将自动在主队列上设置、调用和访问。所有这些调用将自动路由 系统提供的MainActor
,它始终在主线程上执行其所有工作 — 完全消除了我们手动调用DispatchQueue.main.async
的需要。
来源:https://www.swiftbysundell.com/articles/the-main-actor-attribute/