gpt4 book ai didi

macos - 如何使用 KVO 检测应用程序何时激活?

转载 作者:行者123 更新时间:2023-12-03 19:05:42 27 4
gpt4 key购买 nike

我在 Cocoa 应用程序中有以下代码:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSArray* arrayAppList = [[NSWorkspace sharedWorkspace] runningApplications];
}

我的意图是使用 KVO 在将应用程序的状态从非事件更改为事件时检测应用程序。

我读到我必须使用实例方法 -addObserver:forKeyPath:options:context:
然后使用 -observeValueForKeyPath:ofObject:change:context:响应更改通知。

我了解 -observeValueForKeyPath是一种回调方法,我可以在其中编写代码来响应我感兴趣的属性更改。

尽管如此,我对必须如何使用 addObserver 方法才能在 active 时收到通知感到困惑。 runningApplications 的属性(property)改变。现在,我想知道注册的地方在哪里,现在我用的是 -applicationDidFinishLaunching但不确定是否是正确的地方。此外,如果我使用 -observeValueForKeyPath回调方法,我必须在继承自 NSObject 的类中实现它我注册通知的地方是同一个类(class)吗?

最佳答案

  • 您应该调用addObserver:… runningApplications 中每个对象的方法数组(使用 isActive 作为关键路径)。
  • 在您的应用程序完成启动声音后开始观察。就时间而言,就是这样。至于地方,应该有一个单独的类(class)专门用于这些观察。通过在应用程序委托(delegate)中实现观察代码,您将违反单一职责原则(从长远来看,这意味着令人头疼)。
  • observeValueForKeyPath:…回调应该由调用 addObserver:… 的对象实现方法。
  • 关于macos - 如何使用 KVO 检测应用程序何时激活?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8317338/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com