accident étrange NSNotificationCenter
-
05-10-2019 - |
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?
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];
}