Pregunta

Hola chicos, Tengo otro problema. Esta vez con NSNotificationCenter. Ahora se bloquea, pero hace unos días, cuando he añadido la notificación, funcionó correctamente. En el tiempo entre que añade un código que no tiene nada que ver con eso ...

Tengo alrededor de 10x10 baldosas. Cada mosaico añade a sí mismo como un observador tan pronto como se cree:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerJumped) name:@"TestNot" object:nil];

Y en mi clase de jugador, cada vez que un salto terminó, me enviará una notificación con el siguiente código:

if (self.postNotifications == YES) {
    //Also post the notification for all the Tiles.
    [[NSNotificationCenter defaultCenter] postNotificationName:@"TestNot" object:self];
}

Si utilizo NSLog () en las baldosas, puedo ver que unos 3 o 4 azulejos recibir la notificación. Y después de eso, la aplicación se bloquea con un EXC_BAD_ACCESS. Se dice objc_msgSend() selector name: playerJumped. Pero yo no entiendo por qué. Veo que funciona con el primero de lo que se bloquea. ¿Cuál es mi error aquí? ¡Podrías ayudarme! Sandro

EDIT: ¿Hay un problema, ya que la notificación haya sido recibida por cerca de 100 objetos?

¿Fue útil?

Solución

Su objeto del azulejo ha sido desasignado pero todavía está registrado en la NotificationCenter para recibir notificaciones. Trate de añadir un punto de interrupción en el método de la baldosa -dealloc si esto no es lo que se esperaba.

Otros consejos

tenía el mismo problema mismo. La adición de este a la clase resuelto el problema

- (void) dealloc 
{

  [[NSNotificationCenter defaultCenter] removeObserver:self];

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