DispatchQueue.main.async
在Swift中编写异步代码时,你可能会遇到一些并发性和线程安全性的问题
例如刷新UI需要在主线程,在Swift 5.5之前我们都是使用手动来刷新主线程,这样既麻烦又容易遗漏
@MainActor
Swift 5.5 引入了一个新的属性包装器 @MainActor
,它提供了一种简单而安全的方式来在主线程上执行代码。
@MainActor
的原理是,它将属性或方法标记为只能在主队列(主线程)上执行。这意味着使用 @MainActor
修饰的代码块只能在主线程上运行,任何试图在其他线程上调用该代码块的尝试都将被阻塞,直到在主线程上运行。
使用 @MainActor
的语法很简单。你可以将它应用于属性或方法,示例代码如下:
在上面的代码中,data
属性和 updateUI()
方法都被标记为 @MainActor
。这意味着任何试图在非主线程上修改 data
属性或调用 updateUI()
方法的尝试都将被阻塞,直到在主线程上执行。
在UIKit中使用@MainActor
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。