在DispatchQueue中使用弱self



下面是一个简单的API类,如下所示。

class API {
func fetchData(_ callback: @escaping (Data) -> Void) {
// reqeust to server...
callback(response)
}
}

当我们在下面的代码中调用fetchData时,我们使用[weak self]来防止保留循环
我正在使用DispatchQueueue.main.async更新主线程中的UI
我这里也需要[weak self]
fooAfooB哪一个是正确的?

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)
}
}
}
}

weakunowned传播:

api.fetchData { [weak self] data in
// do something with self
DispatchQueue.main.async { // weak inherited
// update UI with data
}
}

相关内容

  • 没有找到相关文章

最新更新