Question

Je espère que quelqu'un peut aider avec mon problème de notification. J'ai une notification qui semble être configuré correctement, mais il n'a pas trouvé comme prévu. Je développe un document app base. Le délégué / document messages de classe la notification lors de la lecture d'un fichier enregistré:

[[NSNotificationCenter defaultCenter] postNotificationName:notifyBsplinePolyOpened object:self];

Logging me dit que cette ligne est atteinte à chaque fois que j'ouvre un document enregistré.

Dans la classe drawView, je les observateurs de la notification WindowOpen et le fichier bsplinePoly ouvrir la notification:

[[NSNotificationCenter defaultCenter] addObserver:self
                                                          selector:@selector(mainWindowOpen:)
                                                          name:NSWindowDidBecomeMainNotification
                                                          object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
                                                          selector:@selector(savedBspline:)
                                                          name:notifyBsplinePolyOpened
                                                          object:nil];

- (void)        mainWindowOpen:(NSNotification*) note
{
        NSLog(@"Window opened");
        _mainWindow = [note object];
}

- (void) savedBspline:(NSNotification*) note
{
        NSLog(@"savedBspline called");
        NSLog(@"note is %@", [note name]);
}

Le comportement est impair. Quand j'enregistrer et fermer la fenêtre principale et rouvre, je reçois le message « fenêtre ouverte », mais pas le message « savedBspline appelé ». Si je laisse une fenêtre principale ouverte et ouvrir une session enregistrée précédemment, je reçois le message « fenêtre ouverte » et le message « savedBspline appelé ».

J'ai cherché la discussion en ligne et la documentation d'Apple DevCenter, mais je n'ai pas vu ce problème.

Était-ce utile?

La solution

Travaux de livraison de NSNotification comme prévu ( au moins lorsqu'aucun de la NSNotificationQueue sont impliqués ). Ils sont livrés immédiatement, non pas sur d'autres sujets, sans délai, et non filtrée.

Je dirais que, certains de vos objets ne sont pas encore instancié lorsque les feux de notification ou vous mélanger l'ordre d'exécution d'une autre manière: Vous dites que vous publiez la notification lors de la lecture d'un fichier enregistré, mais vous » Il manque quelque la notification lors de l'enregistrement et la fermeture de la fenêtre.

Pour aider à corriger, je vous suggère de mettre en place un observateur de notification vous application délégué qui enregistre simplement toutes les notifications. Vous êtes sûr donc que toutes les notifications sont livrées comme prévu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top