Der richtige Ort für den Aufruf von .removeObserver für NSNotificationCenter = Swift deinit ()?

8

Ich habe viele Vorschläge für den richtigen Ort gelesen, um .removeObserver für NSNotificationCenter aufzurufen, da viewDidUnload keine Option ist.

Ich habe mich nur gefragt, ob das neue Deinit () in Swift eine gute Wahl wäre?

-nick

    
nick 31.07.2014, 21:47
quelle

1 Antwort

10

Es hängt wirklich von der Rolle der Klasse ab, in der Sie NSNotificationCenter-Benachrichtigungen abonnieren. Wenn du dich anmeldest:

UIView

Dann sollten Sie sich abmelden, sobald die Ansicht für den Benutzer unsichtbar wird. So sparen Sie CPU-Zyklen und verbrauchen keine Ressourcen, während der Benutzer die Ansicht nicht sieht.

UIViewController

Hier kommt es auch auf die Art der Aktion an, die Sie als Reaktion auf die Benachrichtigung ausführen werden. Wenn es sich nur um eine UI-Anpassung handelt, sollten Sie sich abmelden, sobald der View-Controller vom Bildschirm verschwindet.

Sie App-Service-Ebene

Hier ist es ok, .removeObserver innerhalb von deinit () zu haben. Aber auch hier schlage ich vor, dass Sie expliziter angeben, wenn Sie sich bei NSNotificationCenter notifications anmelden und abmelden und sie in die Start- und Stoppmethoden Ihres Dienstes einfügen.

    
Keenle 31.07.2014, 22:11
quelle