Eliminar todo el observador de notifications de un solo lugar

Quiero eliminar un observador de notifications y estoy usando el método:

removeObserver: name:@"myNotification" object:nil 

para esto. Ahora hay muchos observadores que están escuchando esta notificación y quiero eliminarlos todos en un solo lugar desde un lugar centralizado. ¿Puedo pasar 'nil' en el primer parámetro y eliminará todos los observadores que están escuchando myNotification?

Puede eliminar un object del centro de notifications en set, lo que significa que no se activarán notifications. Por ejemplo, cuando tengo un controller de vista que se ha registrado para las notifications, incluyo esta línea en mi desocupación.

 [[NSNotificationCenter defaultCenter] removeObserver:self]; 

Esto está en el nivel de object … por lo que se anulará el logging para muchas notifications. No se anulará el logging de una notificación en muchos objects.

Espero haber entendido tu pregunta correctamente.

En el caso de Swift, lo haces así:

 NSNotificationCenter.defaultCenter().removeObserver(self) 

Y en Swift 3:

 NotificationCenter.default.removeObserver(self) 

Lamentablemente, no hay forma de eliminar a todos los observadores de una notificación específica en un solo lugar. Si bien ciertamente hay casos en los que esto sería bueno, sería algo peligroso hacerlo en general, el object que hace la observación debería ser el responsable de agregarse y eliminarse a sí mismo como observador de una notificación particular. Esto asegura que no haya un comportamiento impnetworkingecible, por lo que los observadores pueden entrar y salir para que se configuren y limpien después de ellos mismos.

Si un object que genera notifications desaparece, no importará para el observador, ya que el observador no conoce ese object de todos modos. Simplemente significa que el object no generará más notifications.

[EDITAR: RESPUESTA A SU COMENTARIO RE CLASE B DETENER LA CLASE A DE OBSERVAR]

Acabo de ver tu comentario. Existen diferentes forms de lograr esto, especialmente si la class B conoce la class A. Al hacer reference a las classs, parece que desea afectar todas las instancias de una class frente a una instancia en particular. Si tiene alguna condición, puede verificar cuándo maneja la notificación, así es como abordaré esto. En el manejador de notifications algo como:

 if ([self shouldRespondToNotificationNamed:notification.name]) { [self performNotificationAction]; } 

Si no tiene una condición que puede verificar, cree uno en la class en cuestión como un iVar o en un lugar donde pueda acceder a él globalmente para todas las instancias de class. Generalmente uso un singleton para almacenar el estado de la aplicación global que no persiste. Si persiste, usa cualquier método que uses para otro estado.