J'ai eu des problèmes avec la nouvelle API basée sur des blocs de Snow Leopard pour observer les notifications de NSNotificationCenter de NSWorkspace.Problème avec NSWorkspace et l'API basée sur des blocs de NSNotificationCentre dans Snow Leopard
Si je m'inscris pour des notifications en utilisant la méthode traditionnelle basée sur le sélecteur, alors je suis capable d'observer la notification désirée. Si j'essaie d'utiliser la nouvelle méthode qui prend un bloc, cela ne fonctionne pas. Dans le bloc de code ci-dessous, le paramètre usingBlockNotifications sur YES ou NO devrait produire le même résultat, à savoir "didReceiveNoticationTest: called" imprimé sur la console lors du lancement d'une application, mais je ne reçois pas le message lorsqu'il est défini sur OUI.
Des suggestions sur ce que je fais mal?
-(void)awakeFromNib
{
BOOL usingBlockNotifications = YES;
_notifcationObserver = nil;
NSNotificationCenter *nc = [[NSWorkspace sharedWorkspace] notificationCenter];
if (usingBlockNotifications)
{
_notifcationObserver =
[nc addObserverForName:NSWorkspaceDidLaunchApplicationNotification
object:[NSWorkspace sharedWorkspace]
queue:nil
usingBlock:^(NSNotification *arg1) {
[self didReceiveNoticationTest:arg1];
}];
[_notifcationObserver retain];
} else {
[nc addObserver:self
selector:@selector(didReceiveNoticationTest:)
name:NSWorkspaceDidLaunchApplicationNotification
object:[NSWorkspace sharedWorkspace]];
}
}
-(void)didReceiveNoticationTest:(NSNotification *)notification
{
NSLog(@"didReceiveNoticationTest: called");
}
Merci pour cela - content que ce ne soit pas seulement moi! J'ai déposé un bug avec Apple. –