Domanda

Hey ragazzi, Ho un altro problema. Questa volta con NSNotificationCenter. Ora si blocca, ma pochi giorni fa, quando ho aggiunto la notifica, ha funzionato correttamente. Nel periodo tra ho aggiunto un po 'di codice che non ha nulla a che fare con questo ...

Ho circa 10x10 piastrelle. Ogni piastrella stessa aggiunge in veste di osservatore, non appena si è creato:

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

E nella mia classe giocatore, ogni volta che un salto è conclusa, inserisco un notifica con il seguente codice:

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

Se uso NSLog () nelle piastrelle, posso vedere che circa 3 o 4 tessere ricevono la notifica. E dopo che, l'applicazione si blocca con un EXC_BAD_ACCESS. Dice objc_msgSend() selector name: playerJumped. Ma non capisco perché. Vedo che funziona con il primo che si blocca. Qual è il mio errore qui? Potete per favore aiutarmi! Sandro

EDIT: C'è un problema, perché la notifica viene ricevuto da circa 100 oggetti?

È stato utile?

Soluzione

Il vostro alloggio per piastrelle è stato deallocato ma è ancora registrato con il notificationCenter per ricevere le notifiche. Prova ad aggiungere un punto di interruzione sul metodo di -dealloc della piastrella se questo non è quello che vi aspettate.

Altri suggerimenti

ha avuto lo stesso problema io stesso. Aggiungendo questo alla classe risolto il problema

- (void) dealloc 
{

  [[NSNotificationCenter defaultCenter] removeObserver:self];

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top