Swift Closures - захватывать себя как слабого

Я пытаюсь разрешить цикл сильных ссылок на основе замыкания в Swift.
В приведенном ниже коде объект сохраняется владельцем контроллера представления.ProgressHUD этоUIView это также сохраняется контроллером представления.ProgressHUD просачивается каждый раз, когда вызывается обработчик завершения. При использовании новой функции захвата замыкания объявление себя как слабого или несостоявшегося не устраняет утечку памяти.

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?

Ответы на вопрос(4)

Ваш ответ на вопрос