Pregunta

alguien esperanza puede ayudar con mi problema de notificación. He una notificación, que parece estar configurado correctamente pero no se entrega como se esperaba. Estoy desarrollando una aplicación basada en el documento. El delegado / mensajes de clase de documentos la notificación cuando se lee de un archivo guardado:

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

Registro me dice que esta línea se alcanza cada vez que abro un documento guardado.

En la clase DrawView, tengo observadores para la notificación WindowOpen y la notificación de apertura de archivo bsplinePoly:

[[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]);
}

El comportamiento es impar. Cuando guardo y cerca de la ventana principal y volver a abrirlo, me sale el mensaje de “ventana abierta” pero no el “savedBspline llamado” mensaje. Si dejo una ventana principal abierta y abrir una sesión guardada previamente, tengo la “ventana abierta” mensaje y el “savedBspline llamado” mensaje.

He buscado la discusión en línea y la documentación de Apple DevCenter pero no he visto este problema.

¿Fue útil?

Solución

obras de entrega NSNotification como se esperaba ( al menos cuando no están involucrados de NSNotificationQueue ). Se entregan inmediatamente, no en otros hilos, sin retardo, y no filtrada.

Yo diría, algunos de sus objetos aún no se crean instancias cuando los fuegos de notificación o se mezclan el orden de ejecución de alguna otra manera: Usted dice que publique la notificación cuando se lee de un archivo guardado, pero entonces usted' re falta la notificación al guardar y cerrar la ventana.

Para ayudar a la depuración le sugiero que configura un observador de notificación en que la aplicación delegado, que simplemente registra todas las notificaciones. Usted puede estar seguro de que a continuación, todas las notificaciones se entregan como se espera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top