Wenn der Benutzer den View-Controller verwirft, bevor der Anruf zurückgekehrt ist, was mit dem Anruf geschieht Kette zurück? Läuft es immer noch, vorausgesetzt, dass es immer noch referenziert wird?
Ja, es läuft noch.
Seien Sie gewarnt, dass der Verweis auf self
im Verschluss bedeutet, dass es auch einen Verweis auf den View-Controller hält, bis der then
Abschluss beendet wird. Aus diesem Grunde, wenn es eine Chance gibt, die View-Controller abgewiesen worden sein könnten, mögen Sie vielleicht eine weak
Referenz verwenden:
_ = accountService.getAccount().then { [weak self] user -> Void in
self?.txtBxUser.text = user.username
self?.txtBxEmail.text = user.email
}
Idealerweise sollten Sie auch getAccount
kündbare und kündigen sie in dem View-Controller der deinit
machen.
(Beachten Sie, in FAQ - Should I be Concerned About Retain Cycles weist die PromiseKit Dokumentation heraus, dass Sie nicht weak
Referenzen benötigen, was richtig ist. Es ist nur eine Frage, ob oder nicht Sie etwas dagegen, wenn die Freigabe des entlassenen View-Controller erst nach Aufschub das Versprechen ist erfüllt.)