Я программист на Java / Kotlin и новичок в swift. Я хочу передать ссылку на метод в конструкторе, чтобы сохранить его для дальнейшего использования. Метод, который я хочу передать, выглядит следующим образом:
func refresh(completion: @escaping (Error?) -> ()) {
...
}
Я хочу создать экземпляр объекта и передать этот метод в качестве параметра следующим образом:
refreshControl = Refresher() {
compl -> Void in
self.refresh(completion: compl)
}
Класс I хочу передать эту функцию следующим образом:
class Refresher {
let refresh: (@escaping (Error?) -> ()) -> Void
init(refresh: (@escaping (Error?) -> ()) -> Void) {
self.refresh = refresh
}
// call refresh somewhere later
}
Это не компилируется с ошибкой «Присваивание неэкранирующего параметра refre sh закрытию @escaping. Не совсем уверен, что делает экранирование, но Я знаю, что мне нужно это в действующей функции refre * 1013. * Я не уверен, как синтаксис этого права. Любая помощь будет оценена.