这是一个简单的 API 类,如下所示。
class API {
func fetchData(_ callback: @escaping (Data) -> Void) {
// reqeust to server...
callback(response)
}
}
当我们fetchData
在下面的代码中调用时,我们使用[weak self]
来防止保留循环。
我DispatchQueueue.main.async
用来更新主线程中的 UI。
我也需要在[weak self]
这里吗?
哪一个是对的,fooA
还是fooB
?
class MyViewController: UIViewController {
let api = API()
func fooA() {
api.fetchData { [weak self] data in
self?.doSomething()
DispatchQueue.main.async { [weak self] in
self?.updateUI(data)
}
}
}
func fooB() {
api.fetchData { [weak self] data in
self?.doSomething()
DispatchQueue.main.async {
self?.updateUI(data)
}
}
}
}