problem mit NSNotificationDefaultCenter [geschlossen]
-
14-11-2019 - |
Frage
Ich habe den folgenden Code:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(cmd:)
name:@"cmdAvailable"
object:nil];
und ich habe das cmd als:
-(void) cmd: (NSNotification *) notification
im selben UIViewController.Auf dem anderen UIViewController, den ich habe, habe ich das gemacht:
NSDictionary * userInfo = [NSDictionary dictionaryWithObject:requestUrl forKey:@"requestUrl"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"cmdAvailable" object:nil userInfo:userInfo];
Warum ruft es mich nicht an cmd: (NSNotification *) notification
methode?Ich habe nachgesehen und diese Nachbenachrichtigung wird aufgerufen.
Lösung
Sollte es nicht das sein?
NSDictionary * userInfo = [NSDictionary dictionaryWithObject:requestUrl forKey:@"requestUrl"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"cmdAvailable" object:self userInfo:userInfo];
Die Dokumentation sagt das:
- (void)postNotificationName:(NSString *)notificationName object:(id)notificationSender userInfo:(NSDictionary *)userInfo
Rahmenbedingungen
Benachrichtigungsname:
Der Name der Benachrichtigung.
Benachrichtigungsender:
Das Objekt, das die Benachrichtigung sendet.
Benutzerinfo:
Informationen über die Benachrichtigung.Kann Null sein.
Objekt sollte also das Objekt sein, das die Benachrichtigung veröffentlicht, nämlich self
UPDATE
Die Benachrichtigung enthält drei Teile:
– Name
– Objekt
- Benutzerinfo
Der Empfänger weiß nicht nur, dass die Nachricht gesendet wurde, sondern auch, welches Objekt sie gesendet hat.