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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top