Swift-Verschlüsse - Erfassung selbst als schwach

Ich versuche mich zu lösen, eine Schließung basiert stark Referenz-Zyklus, in Swift.

In dem code unten, so wird das Objekt beibehalten, durch die der Besitz view-controller. ProgressHUD ist ein UIView auch beibehalten, durch die der Besitz view-controller. ProgressHUD zugespielt wird jedes mal der Abschluss-handler aufgerufen wird. Wenn mit dem neuen Verschluss-capture-Funktion, deklarieren sich selbst als schwach oder der Besitzer nicht lösen das memory-leak.

object.setCompletionHandler { [weak self] (error) -> Void in
    if(!error){
        self?.tableView.reloadData()
    }
    self?.progressHUD?.hide(false)
}

Allerdings, wenn ich erkläre einer schwachen var für sich selbst außerhalb der Verschluss, es behebt das Speicher-Leck, wie diese:

weak var weakSelf = self
object.setCompletionHandler { (error) -> Void in
    if(!error){
        weakSelf?.tableView.reloadData()
    }
    weakSelf?.progressHUD?.hide(false)
}

Irgendwelche Ideen, warum dies nicht funktioniert mit Swift erfassen?

  • es sollte auch nicht behalten-Zyklus
Schreibe einen Kommentar