Macos OS X在应用程序打开、退出和更改焦点时发出通知

Macos OS X在应用程序打开、退出和更改焦点时发出通知,macos,cocoa,window,Macos,Cocoa,Window,当其他应用程序打开或退出时,或者当不同的窗口(侦听应用程序或其他应用程序)被置于最前沿时,有没有办法通知cocoa应用程序?您可以向共享工作区通知中心添加观察员: [[[NSWorkspace sharedWorkspace] notificationCenter] addObserverForName:NSWorkspaceDidActivateApplicationNotification object:nil queue:[NSOperationQueue currentQueue] us

当其他应用程序打开或退出时,或者当不同的窗口(侦听应用程序或其他应用程序)被置于最前沿时,有没有办法通知cocoa应用程序?

您可以向共享工作区通知中心添加观察员:

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserverForName:NSWorkspaceDidActivateApplicationNotification object:nil queue:[NSOperationQueue currentQueue] usingBlock:^(NSNotification *note) {
    NSRunningApplication *frontmostApplication = [[note userInfo] objectForKey:NSWorkspaceApplicationKey];
}];

// from NSWorkspace.h
APPKIT_EXTERN NSString * NSWorkspaceWillLaunchApplicationNotification;  //  see above
APPKIT_EXTERN NSString * NSWorkspaceDidLaunchApplicationNotification;   //  see above
APPKIT_EXTERN NSString * NSWorkspaceDidTerminateApplicationNotification;    //  see above
APPKIT_EXTERN NSString * const NSWorkspaceDidHideApplicationNotification NS_AVAILABLE_MAC(10_6);
APPKIT_EXTERN NSString * const NSWorkspaceDidUnhideApplicationNotification NS_AVAILABLE_MAC(10_6);
APPKIT_EXTERN NSString * const NSWorkspaceDidActivateApplicationNotification NS_AVAILABLE_MAC(10_6);
APPKIT_EXTERN NSString * const NSWorkspaceDidDeactivateApplicationNotification NS_AVAILABLE_MAC(10_6);

哦,记住在解除分配时删除观察者!