selector de NSNotificationCenter no siendo llamado
-
02-10-2019 - |
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
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.