Question

Ce n'est pas tant une question qu'une pensée réfléchie - pourquoi NSNotificationCenter lance-t-elle une exception lors de sa sortie? Je suis encore nouveau dans le développement de l'iPhone, et je ne connais donc pas encore les entrailles du cacao, il serait donc bon de comprendre pourquoi.

J'attribue le defaultCenter à une variable, appelant addObserver: sélecteur: nom: objet puis libérer la variable précédente, mais l'appel à Notifier la version plante l'application. Je ne fais rien d'étrange dans le code, il serait donc intéressant de découvrir exactement pourquoi il fait cela.

Quelqu'un a rencontré ce problème?

Était-ce utile?

La solution

D'après ce que je sais de NSNotifcation, vous ne devriez pas affecter le Centre default à une variable mais plutôt faire quelque chose comme:

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

Dans cet extrait, vous appelez le centre par défaut et enregistrez l'objet actuel pour un certain message.

Et puis pour publier un message au centre de notification que vous pouvez utiliser:

[[NSNotificationCenter defaultCenter] postNotificationName:@"IncorrectLogin" object:nil];

J'utilise ce qui précède dans tout mon code et je n'ai aucun problème avec cela.

Autres conseils

Il ne devrait y avoir qu'un seul centre de notification par défaut pour votre application, donc aucune de vos classes ne devrait la conserver ou la libérer. Vous ne voudriez pas que votre centre de notification disparaisse sur vous, non?

Je ne pense pas que vous possédiez l'objet et que vous ne devriez donc pas le libérer.

N'oubliez pas le NARC: Nouvel alloc, conservez, copiez. Si vous en faites un, vous devez le libérer.

Ce n'est pas le vôtre de libérer.

N'oubliez pas la règle NARC - vous ne libèrez que des choses que vous avez apportées en utilisant:

Nouvel allocation conserver ou copier.

Narc. Voir?

Ce que vous faites avec NSNotificationCenter, c'est que vous obtenez une copie du Singleton qui représente le centre de notification par défaut. Cela valait la peine d'être lu sur les singletons.

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