Я пытаюсь разрешить сильный опорный цикл закрытия в Swift.
В приведенном ниже коде объект хранится с помощью контроллера представления. ProgressHUD
- это UIView
, который также хранится у владельца. ProgressHUD
просачивается каждый раз, когда вызывается обработчик завершения. При использовании новой функции захвата закрытия объявление self как слабое или неактивное не устраняет утечку памяти.Swift Closures - Захват себя как слабый
object.setCompletionHandler { [weak self] (error) -> Void in
if(!error){
self?.tableView.reloadData()
}
self?.progressHUD?.hide(false)
}
Однако, если я объявляю слабое склонение для себя вне закрытия, он фиксирует утечку памяти, например:
weak var weakSelf = self
object.setCompletionHandler { (error) -> Void in
if(!error){
weakSelf?.tableView.reloadData()
}
weakSelf?.progressHUD?.hide(false)
}
Любые идеи, почему это не работает с Swift захвата ?
не должно быть сохранить цикл – newacct