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() }
}
}
我有一个函数 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() }
}
}