Pregunta

Es necesario crear dos clases y ambos deben ser capaces de enviar y recibir los eventos a través de la NSNotificationCenter methods.ie Ambos deben tener los métodos SendEvent y receiveEvent:

      @implementation Class A
-(void)sendEvent
{
    addObserver:---  name:---- object:---
}

-(void)ReceiveEvent
{
postNotificationName: --- object:---
}
@end

Lo mismo que tal otra clase dicen ClassB también debe ser capaz de enviar y recibir los eventos. ¿Cómo puede hacerse esto?

¿Fue útil?

Solución

Lo ideal sería un objeto comenzar a observar eventos de interés tan pronto como su inicializado. Por lo tanto, se registrará todos los eventos interesantes con el NotificationCenter dentro de su código de inicialización. sendEvent: es básicamente una envoltura alrededor del método postNotification:.

@implementation A

- (id)init {
    if(self = [super init]) {
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveEvent:) name:@"SomeEvent" object:nil];
    }
    return self;
}

- (void)sendEvent {
    [[NSNotificationCenter defaultCenter] postNotificationName:@"SomeOtherEvent" object:nil];
}

// Called whenever an event named "SomeEvent" is fired, from any object.
- (void)receiveEvent:(NSNotification *)notification {
    // handle event
}

@end

Lo mismo para la clase B.

Editar 1:

Es posible que complicar el problema. Un NSNotificationCenter actúa como un intermediario para los cuales se envían todos los eventos y decide que transmita a que a. Es como el Observador patrón pero los objetos no observan directa o notificar a la otra, sino más bien a través de una corredor de centro - el NSNotificationCenter en este caso. Con esto no es necesario para conectar directamente dos clases que podrían ser interactúan entre sí con una #include.

Si bien el diseño de sus clases, no se preocupe acerca de cómo conseguiría notificado un objeto o cómo iba a notificar a otros objetos interesados, solo que un objeto tiene que ser notificado acerca de algunos eventos cuando se producen, o se tiene que informar de NSNotficationCenter sus eventos cuando se producen.

Así que en resumen, encontrar todos los eventos que un objeto debería conocer y registrar los acontecimientos en este método init(), y anular el registro en el método dealloc().

Usted puede encontrar esta tutorial básico útiles.

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