Question

Hey Guys, J'ai un autre problème. Cette fois-ci avec NSNotificationCenter. Maintenant, il se bloque, mais il y a quelques jours, quand j'ai ajouté la notification, il a fonctionné correctement. Dans le temps entre j'ajouté un code qui n'a rien à voir avec ça ...

J'ai environ 10x10 tuiles. Chaque carreau lui-même ajoute à titre d'observateur dès qu'il est créé:

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

Et dans ma classe de joueur, chaque fois qu'un saut terminé, je poste une notification avec le code suivant:

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

Si je NSLog () dans les carreaux, je peux voir que 3 ou 4 tuiles reçoivent la notification. Et après cela, l'application se bloque avec un EXC_BAD_ACCESS. Il dit objc_msgSend() selector name: playerJumped. Mais je ne comprends pas pourquoi. Je vois que cela fonctionne avec le premier qu'il se bloque. Quel est mon erreur ici? Pouvez-vous m'aider s'il vous plaît! Sandro

EDIT: Y at-il un problème, parce que la notification est reçue d'environ 100 objets?

Était-ce utile?

La solution

Votre objet de tuiles a été désalloué mais il est toujours inscrit à l'NotificationCenter recevoir des notifications. Essayez d'ajouter un point d'arrêt sur la méthode -dealloc de la tuile si ce n'est pas ce que vous attendez.

Autres conseils

Had moi le même problème. L'ajout de ce à la classe a résolu le problème

- (void) dealloc 
{

  [[NSNotificationCenter defaultCenter] removeObserver:self];

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top