Par exemple, obtenez la notification qu'une autre application devient active à l'écran ou démissionnez de l'état actif.
Réponses:
7 pour la réponse № 1Sûr. Dans votre classe de délégué d’application, vous pouvez utiliser NSWorkspace
pour être averti quand une application devient active (NSWorkspaceDidActivateApplicationNotification
) ou démissionne actif (NSWorkspaceDidDeactivateApplicationNotification
). Voir la documentation sur NSWorkspace
pour plus d'informations.
Dans votre classe de contrôleur, vous feriez quelque chose comme ceci:
- (id)init {
if ((self = [super init])) {
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
selector:@selector(appDidActivate:)
name:NSWorkspaceDidActivateApplicationNotification
object:nil];
}
return self;
}
- (void)dealloc {
[[[NSWorkspace sharedWorkspace] notificationCenter] removeObserver:self];
[super dealloc];
}
- (void)appDidActivate:(NSNotification *)notification {
NSDictionary *userInfo = [notification userInfo];
NSLog(@"userInfo == %@", userInfo);
}
Les points clés sont essentiellement la nécessité de s’inscrire pour recevoir les notifications comme indiqué -init
. Vous devez répéter le code pour ajouter un autre observateur pour chaque nom de notification supplémentaire souhaité (par exemple, NSWorkspaceDidDeactivateApplicationNotification
).
Une autre chose importante à retenir est de vous retirer en tant qu'observateur -dealloc
(ou ailleurs), de sorte que NSWorkspace
n’essaye pas de notifier votre objet contrôleur après qu’il a été publié + dealloc "d (et ne serait plus valide).
Dans le spécifié -appDidActivate:
méthode, faites ce que vous devez avec les informations sur l'application en question.
0 pour la réponse № 2
Si vous voulez quelque chose de plus simple que objets distribués, vous pouvez utiliser les notifications distribuées dele centre de notification distribué. Cependant, ceux-ci ne sont pas publiés sauf si vous avez créé l'application. Pour surveiller le démarrage ou la fermeture des applications, vous pouvez utiliser NSWorkspace et son centre de notification (suggéré par NSGod).