Swift 多线程 Getter

Swift Multithreading Getter

我有一个函数 getAccessToken() 可以调用 API 并且可以 return 在一个单独的线程上但是我需要我的程序等到它 return 到继续。

我知道我可以使用 dispatch 来确保它 return 在同一个线程上,但我很好奇如果一个带有 getter 的变量进行调用会完成同样的事情东西。

例如:

var accesstoken : String {
    get {
         return getAccessToken()
    }
}

我问的原因是因为当我访问令牌时,我希望能够只使用一行代码,而不必确保每次都等待令牌到 return。

理想情况下,我可以做 Common.getAccessToken()Common.accessToken 之类的事情,而不必做任何额外的事情。

您的代码示例无法实现直接调用 getAccessToken() 无法实现的任何功能。您需要的是将该调用包装在同步调度调用中:

class MyType {
    let queue: DispatchQueue

    //...

    private func generateAccessToken() -> String {
        //...
    }

    public var accessToken: String {
        return queue.sync { generateAccessToken() }
    }
}