Ich habe Probleme, einen Retain-Zyklus aufzuspüren. Ich denke, es hat damit zu tun, wie ich Events abonniere. Pseudo-Code ist wie folgt aus:Behält sich die Verwendung einer Funktion als Verschluss selbst?
override func viewDidLoad() {
func handleEvent() {
self.doSomething()
}
subscribe("eventName", block: handleEvent)
}
deinit {
unsubscribe("eventName")
}
Wird dies einen Zyklus zu Selbst/meine Viewcontroller behalten schaffen? Und wenn, wie kann ich es umgehen? Wenn ich eine Schließung benutze, könnte ich [schwaches Selbst] benutzen, aber da ich eine Funktion übergebe, gibt es überhaupt ein Äquivalent für [schwaches Selbst]?
Diese Frage bezieht sich auf Schließungen, ich frage über die Verwendung von Funktionen als Schließungen. Kann nicht schwaches Selbst mit einer Funktion verwenden. –
Lesen Sie Ihren Code falsch ... mein schlechtes. nur eine Sekunde – PeejWeej
Wir müssen wissen, was 'subscribe' mit dem übergebenen Abschluss macht, um festzustellen, ob Sie einen Retain-Zyklus haben oder nicht. Wenn es nur aufgerufen wird, ohne es zu speichern oder in einem anderen Closure zu speichern, das dann gespeichert wird (auf "self" oder etwas, auf das "self" eine starke Referenz hat), dann gibt es keinen Retain-Zyklus. Wenn es speichert/erfasst, dann haben Sie ja einen Retain-Zyklus. Es wäre sehr hilfreich, wenn Sie Ihren Code auf einen [mcve] herunterkochen könnten. – Hamish