У меня есть вопрос относительно удержания ссылки Strong на локальный объект, использующий замыкание.У меня есть следующий код, в котором объект B использует метод с закрытием локального объекта типа A. Метод в объекте A использует асинхронное действие для выполнения некоторой сетевой задачи, а затем возвращает закрытие для объекта b.Так как объект A является локальным в методе в B, и поскольку я использую [слабое я] в асинхронной задаче объекта A (чтобы предотвратить сохранение цикла), объект освобождается.
Что я должен изменить вследующий код, чтобы гарантировать, что локальный объект A будет освобожден только после закрытия?
Это часть важного кода:
class A {
var restAPI: RestAPI?
func fetchNews(completion: (_ json: [String:Any])->()) {
// .....
self.restAPI.fetch(url: url, results: { [weak self] (json) in //
completion(json)
})
// .....
}
}
class B {
// ....
// ... call to updateNews()
func updateNews() {
let aFetcher: A()
aFetcher.fetchNews(completion : {
// <<<< // aFetcher gets released and closue never called
// parse...
}
}
}