2009-03-15 8 views
1

Je ne sais pas si je fais quelque chose de mal ici:NSWorkspace NotificationCenter pas l'envoi de notifications en collecte des ordures

Je me inscris pour les notifications de l'espace de travail en utilisant cet extrait dans awakeFromNib

[[[NSWorkspace sharedWorkspace] notificationCenter] 
    addObserver:self 
     selector:@selector(noteReceived:) 
      name:nil 
     object:nil]; 

le sélecteur noteReceived: prend un seul NSNotification * en tant que paramètre. Et j'ai un point d'arrêt dessus.

Lorsque compilé avec le GC désactivé, cela fonctionne très bien, et je reçois toutes les notifications. Lorsque le GC est activé, je ne reçois qu'une seule notification lorsque mon application est lancée, et c'est tout.

Ai-je raté quelque chose?

Solution:

je manque quelque chose. C'était juste un projet de test rapide donc il n'y avait pas le lien habituel entre les contrôleurs qu'il y aurait dans une vraie application. Il ne suffit pas d'instancier un objet dans un fichier nib/xib et d'attendre qu'il ne soit pas collecté. Une fois que j'ai fait de mon contrôleur un délégué du propriétaire du fichier (même s'il n'implémente aucune méthode de délégué), c'était suffisant pour garder l'objet en vie.

Répondre

2

Sous GC, NSNotificationCenter conserve uniquement une référence faible à votre objet observant. Pour cette raison, assurez-vous que votre objet observant est ancré quelque part dans votre hiérarchie d'objets.

+0

Merci, cela m'a aidé à trouver une solution. – Abizern

Questions connexes