Ich habe zwei Klassen, die NSNotification
verwenden, um miteinander zu kommunizieren.Benachrichtigung zweimal ausgelöst, obwohl Beobachter nur einmal hinzugefügt wurde
Derzeit habe ich ein Problem mit der Benachrichtigung zweimal ausgelöst, ich habe doppelt/triple/noch mehr überprüft, dass Beobachter nicht mehr als 1 Mal hinzugefügt wird, Benachrichtigung nicht zweimal gebucht, hat globale Suche auf meinem Projekt für die gleiche Benachrichtigung.
Mein Code ist wie unten
hinzugefügt Mitteilung Observer
[[NSNotificationCenter defaultCenter] removeObserver:self name:notification_deleteMediaFromGallery object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationReceiver:) name:notification_deleteMediaFromGallery object:nil];
Mitteilung Empfänger
- (void)notificationReceiver:(NSNotification*)notification {
if ([notification.name isEqualToString:notification_deleteMediaFromGallery]) {
if ([[notification.userInfo objectForKey:@"kind"] integerValue]==GalleryKindPhoto) {
//My statements
}
else if ([[notification.userInfo objectForKey:@"kind"] integerValue]==GalleryKindVideo) {
//My statements
}
}
}
Nachmeldung
dispatch_async(dispatch_get_main_queue(), ^{
[_browser reloadData];
[[NSNotificationCenter defaultCenter] postNotificationName:notification_deleteMediaFromGallery object:nil userInfo:@{@"index":@(_browser.currentIndex), @"kind":@(self.kind), @"function":[NSString stringWithFormat:@"%s",__PRETTY_FUNCTION__]}];
});
ich auch this solution von EmptyStack versucht haben, aber es ist nicht an die Arbeit.
Ich werde Ihnen sehr dankbar sein, wenn Sie mir helfen könnten, dieses Problem zu lösen.
Danke.
bearbeiten
HINWEIS
I Beobachter in meinem viewDidLoad hinzugefügt haben, und kann nicht hinzufügen/entfernen Beobachter aus viewwillappera/ViewWillAppear oder ViewDidAppear/viewdiddisappear weil die nächste Viewcontroller, die auf geschoben werden Aktuelle Viewcontroller wird Benachrichtigungen notieren
Vielleicht u dies versucht haben, aber könnten Sie uns sagen, was passiert, nachdem Sie einige print-Anweisung an beiden Orten hinzufügen; eine wo du postest und eine wo du dich registrierst – humblePilgrim
@humblePilgrim yeah ich habe es versucht, es protokolliert einmal, wo ich meine Benachrichtigung aber im Empfänger protokolliert es zweimal mit der gleichen Adresse Nummer der Benachrichtigung –
Ich werde Protokoll der Benachrichtigung in etwa einer Stunde –