Pregunta

En mi aplicación para el iPad, en una clase me registro para una notificación:

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
    [nc addObserver:self selector:@selector(selectedList:) name:@"TTSelectedList" object:nil];

Mis selectedList: método es similar al siguiente:

- (void)selectedList:(NSNotification*)notification
{
    NSLog(@"received notification");
}

A continuación, en otra clase (a UITableViewController) he puesto que la notificación cuando se selecciona una fila:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"posting notification");
    [[NSNotificationCenter defaultCenter] postNotificationName:@"TTSelectedList" object:nil];
}

Me puede confirmar que la notificación ha sido publicada, ya que "la notificación publicación" se registra en la consola, pero "notificación recibida" nunca es llamado, lo que significa que la notificación no se recibe y el selector no ha sido llamado. No puedo averiguar qué está causando esto.

Gracias

¿Fue útil?

Solución

La causa más probable es que usted no está realmente llamando addObserver:selector:name:object:. Usted no tiene una línea de registro de allí; ¿está seguro de que el código se está ejecutando?

La segunda causa más probable es que usted está llamando removeObserver: antes de que se publicó la notificación. Esto es más común en dealloc (que deberían siempre removeObserver si alguna vez has observado nada de llamadas). El error en este caso sería que su objeto de observación ha desasignado antes de la notificación.

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