Wie kann ich den Observer in NSNotification zweimal aufrufen?
Habe ich ein Beobachter der NSNotification
die zweimal aufgerufen. Ich weiß nicht, was mit ihm zu tun.
Ich es gegoogelt aber keine Lösung gefunden.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(connectedToServer:) name:@"ConnectedToServer" object:nil];
- (void)connectedToServer:(NSNotification*)notification {
[[NSNotificationCenter defaultCenter] postNotificationName:@"SendMessageToServer" object:message];
}
Kommentare dem Thema
Es könnte helfen, um uns ein wenig code zu sehen.
Bitte Lesen Sie diese Antwort stackoverflow.com/questions/10835000/..., in Bezug auf die "blue box" Klasse-Instanz im interface builder...
InformationsquelleAutor der Frage Azhar | 2011-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösung 1: Die erste Sache ist, um zu überprüfen, ob die Benachrichtigung selbst ist zweimal geschrieben.
Lösung 2: Auch wenn die Meldung nur ein mal ausgeschrieben, die Aktion wird genannt, wie viele Male, die Sie Hinzugefügt haben die Beobachter für die Benachrichtigung (egal, die Mitteilung derselben ist oder nicht). Zum Beispiel die beiden folgenden Zeilen wird die Registrierung der Beobachter(
self
) für die gleiche Meldung(aSelector
) zweimal.Haben Sie, um herauszufinden, wo Sie hinzufügen, Beobachter zum zweiten mal, und entfernen Sie es. Und auch stellen Sie sicher, dass der code dort, wo Sie sind, fügen Sie den Betrachter nicht zweimal aufgerufen.
Lösung 3: Wenn Sie nicht sicher sind, ob Sie bereits Hinzugefügt haben, den Beobachter zu oder nicht, können Sie einfach Folgendes tun. Dies wird sicherstellen, dass der Beobachter nur einmal Hinzugefügt.
InformationsquelleAutor der Antwort EmptyStack
Wenn Ihr
addObserver
Methode mehrmals ausgeführt, es werden mehrere Beobachter. Mein Problem war, dass ich irgendwie legte meine Beobachter inviewWillAppear
erschien mehrere Male, bevor ich gepostet die Meldung und es führte zu meiner Beobachter wird mehrfach aufgerufen.Während EmptyStack 3. Lösung funktioniert, es gibt einen Grund, Ihre Beobachter wird zweimal aufgerufen, so finden, können Sie verhindern, dass unnötig Zeilen code, anstatt das entfernen und hinzufügen von ein und demselben Betrachter.
Ich würde vorschlagen, Sie setzen Ihre Beobachter in
viewDidLoad
zu vermeiden Sie einfache Fehler, wie ich Sie erlebt habe.InformationsquelleAutor der Antwort tfrank377
Versuchen, removeObserver in Methode viewWillDisappear :
InformationsquelleAutor der Antwort bhadresh
Versuchen legen Sie einen Haltepunkt auf
[[NSNotificationCenter defaultCenter] addObserver:self selector:aSelector name:aName object:nil];
und prüfen, ob es mehr als einmal aufgerufen.InformationsquelleAutor der Antwort stcui
Für die Suche nach einer Lösung im Swift-2.2 und höher und, die erreicht haben, diese Frage gefällt mir, können Sie eine Erweiterung wie folgt :
Rufen Sie die Methode wie folgt :
Die Erweiterung mit der Entfernung der früheren Beobachter, wenn es vorhanden ist. Auch wenn es davor keine Beobachter vor dieser code wird nicht Abstürzen.
InformationsquelleAutor der Antwort Joyson