Код: Выделить всё
class Network {
func getNumber(completion: @escaping (Int) -> ()) {
//some network code
completion(5)
}
}
class MyClass {
var num = 0
let network = Network()
func myFunc() {
network.getNumber { [weak self] (number) in
self?.num = number
}
}
func myFunc2() {
network.getNumber { [weak self] (number) in
self?.num = number
}
}
}
вот так:
Код: Выделить всё
class MyClass {
var num = 0
let network = Network()
func myFunc() {
network.getNumber(completion: self.handleData)
}
func myFunc2() {
network.getNumber(completion: self.handleData)
}
func handleData(_ number: Int) -> () {
self.num = number
}
}
Проблему можно легко избежать, изменив handleData на замыкание следующим образом:
Код: Выделить всё
lazy var handleData: (Int) -> () = { [weak self] in
self?.num = $0
}
Подробнее здесь: https://stackoverflow.com/questions/621 ... ot-closure