5

ich eine Benachrichtigung Beobachter meiner Ansicht Controller init Methode, wie so nach oben:Wo sollte ich einen Benachrichtigungsbeobachter entfernen?

[[NSNotificationCenter defaultCenter] 
        addObserver:self 
        selector:@selector(saveState) 
        name:UIApplicationWillResignActiveNotification 
        object:nil]; 

Wo ist der beste Ort removeObserver:name:object: für diese Meldung zu nennen. Ich rufe es gerade in meiner dealloc Methode an, aber wollte wissen, ob das Probleme verursachen könnte.

Antwort

8

Nein, Sie haben es richtig gemacht. dealloc ist der richtige Ort zum Entfernen von Benachrichtigungsbeobachtern (es sei denn, Sie haben einen bestimmten Grund, den Beobachter früher entfernen zu müssen).

+0

Danke dafür, schön, Bestätigung zu bekommen. –

+0

Könnten Sie bitte einen Verweis auf die offizielle Dokumentation veröffentlichen? – rraallvv

1

Sie können immer den Beobachter in viewWillDisappear: entfernen, oder wenn Sie fertig sind und keine andere Notwendigkeit dafür haben, können Sie es in einer Funktion platzieren.

+0

Es sei denn, die Ansicht wird erneut angezeigt. Ich denke, Ihr Ansatz würde funktionieren, wenn ich den Benachrichtigungsbeobachter in 'viewWillAppear:' starten würde. –

1

Wenn die -saveState nur einmal ausführen müssen, wenn sie aktiv sind, dann können Sie removeObserver innerhalb des -saveState.

+0

Vermutlich möchte er erneut speichern, wenn die App aktiv wird und dann wieder aktiv zurücktritt. –

+0

Sie haben Recht. Ich nehme an, dass er sich wieder als Beobachter registrieren wird, wenn die App aktiv wird. – AechoLiu

+0

Ich habe gerade 'saveState' als Beispiel verwendet, aber es müsste wahrscheinlich immer wieder aufgerufen werden (zum Beispiel wenn die App in den Hintergrund tritt), also benutze ich' dealloc' besser. –

Verwandte Themen