А что делать с тем, что guard порождает сильную ссылку?
import Foundation
class Presenter {
let interactor = Interactor()
func downloadData() {
interactor.getTask {[weak self] (data) in
guard let self = self else {
print("noself")
return
}
print("waiting")
sleep(4)
self.update(data: data)
}
}
func update(data: String) {
print(data)
}
}
class Interactor {
func getTask(completion:
@escaping(String) -> Void) {
DispatchQueue.global().asyncAfter(deadline: .now() + 1.0) {
completion("Hello")
}
}
}
var presenter: Presenter? = Presenter()
presenter?.downloadData()
sleep(3)
presenter = nil
print("Goodbay")