Objective c 以编程方式跟踪Mac上活动应用程序的最佳方法是什么

Objective c 以编程方式跟踪Mac上活动应用程序的最佳方法是什么,objective-c,macos,cocoa,macos-carbon,Objective C,Macos,Cocoa,Macos Carbon,我想创建一个跟踪当前活动应用程序(活动窗口)的后台应用程序。我通过使用GetFrontProcess设法获取活动应用程序,但现在我需要跟踪它,以便知道它何时更改。 我想到了两种方法 1.设置定时器,并在每次定时器触发时重新检查变量(我应该创建线程吗?) 2.创建一个专用线程,检查循环中的变量,并在每次迭代后休眠几毫秒以避免溢出 效率对我来说很重要,因为这应该是一个无干扰的后台线程。 你认为这些方法正确吗?有效率方面的考虑吗?我想听听更有效的不同想法 谢谢你的帮助 Gil您可以观察NSWorksp

我想创建一个跟踪当前活动应用程序(活动窗口)的后台应用程序。我通过使用
GetFrontProcess
设法获取活动应用程序,但现在我需要跟踪它,以便知道它何时更改。 我想到了两种方法 1.设置定时器,并在每次定时器触发时重新检查变量(我应该创建线程吗?) 2.创建一个专用线程,检查循环中的变量,并在每次迭代后休眠几毫秒以避免溢出

效率对我来说很重要,因为这应该是一个无干扰的后台线程。 你认为这些方法正确吗?有效率方面的考虑吗?我想听听更有效的不同想法

谢谢你的帮助
Gil

您可以观察
NSWorkspace
通知
NSWorkspaceDidActivateApplicationNotification

例如:

并有一个方法:

-(void)appActivated:(NSNotification*) notification {
    NSRunningApplication* currentApp = [notification.userInfo valueForKey:NSWorkspaceApplicationKey];
    ....
}
-(void)appActivated:(NSNotification*) notification {
    NSRunningApplication* currentApp = [notification.userInfo valueForKey:NSWorkspaceApplicationKey];
    ....
}