一尘不染

Swift 3 GCD API更改后的dispatch_once

swift

dispatch_once语言版本3进行更改后,Swift中的新语法是什么?旧版本如下。

var token: dispatch_once_t = 0
func test() {
    dispatch_once(&token) {
    }
}

这些是对libdispatch所做的更改


阅读 300

收藏
2020-07-07

共1个答案

一尘不染

文档

派遣

自由功能dispatch_once不再提供斯威夫特。在Swift中,您可以使用延迟初始化的全局变量或静态属性,并获得与提供的dispatch_once相同的线程安全性和一次调用保证。例:

let myGlobal: () = { … global contains initialization in a call to a closure … }()
_ = myGlobal  // using myGlobal will invoke the initialization code only the first time it is used.
2020-07-07