Esto no es una pregunta tanto como una advertencia a otros para ahorrarles algo de tiempo.Advertencia para usuarios de iOS/iPhone sobre observaciones NSNotification duplicadas
NSNotificationCenter en iOS 3/iPhone OS 3 (estoy asumiendo también Mac OS X y iOS 4) tiene el siguiente comportamiento:
Si se registra a sí mismo varias veces para la notificación específica exacta, NSNotificationCenter se NO reconozca la redundancia y, en su lugar, se activarán tantas notificaciones para usted como haya registrado una observación.
Casi nunca es el comportamiento que desea ver y casi siempre es accidental.
Ejemplo:
Quiero que mi controlador de vista para recibir las notificaciones de un objeto de red aislado cuando llegan nuevos datos:
- (void) viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(newDataArrived:)
name:NewDataArrivedNotification
object:[NetworkListener sharedNetworkListener]];
}
pero antes ya había puesto la misma cosa en viewWillAppear
:
- (void) viewWillAppear
{
[super viewWillAppear];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(newDataArrived:)
name:NewDataArrivedNotification
object:[NetworkListener sharedNetworkListener]];
}
Tenga en cuenta que es exactamente la misma notificación, resolviendo al mismo observador , remitente y nombre de notificación.
En este caso, si no elimino una de esas llamadas addObserver, recibiré notificaciones duplicadas en mi controlador de vista.
En un entorno de múltiples subprocesos, este es un mundo de dolor. Créeme.
Simplemente poniendo esto por si acaso hay otros que se encuentran con algo como esto.
Es bueno tener la advertencia: probablemente debas poner la mayor parte de esto en una respuesta y aceptarlo :) (señal Alex Trebek murmurando algo acerca de 'debes expresar tu respuesta ...') –
Me tomó suficiente tiempo, pero listo. –