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")
…. Зачем?
??? - упрощение синтаксиса? - убрать проверки на наличие значения в объектах... которые будут также опциональными, если self опционален - оптимизация времени исполнения - если self = nil, то блок прервёт своё выполнение (а если в нём есть логика - это тоже не последнее дело), а если использовать ? - пойдёт исполнение дальше... бессмысленное разумеется
Так и нет ответа. Зачем в том примере guard? Он вообще там нужен?
Обсуждают сегодня