我正在构建一个启动另一个程序的程序,然后应该对其进行监视,并在它终止时采取措施。当应用程序启动时,我可以从 NSWorkspace 获取 NSRunningApplication 的实例。
现在,文档指出 NSRunningApplication 具有键值可观察的属性“终止”。我试过实现:
[browserInstance addObserver:self
forKeyPath:@"terminated"
options:NSKeyValueObservingOptionNew
context:NULL];
和:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
NSLog(@"observeValueForKeyPath");
if ([keyPath isEqual:@"terminated"])
{
NSLog(@"terminated");
}
}
但我从未见过 observeValueForKeyPath 方法被触发。如果可能的话,有谁知道如何进行这项工作?我无法在网上的任何地方找到任何具体示例。
最佳答案
你试过keyPath“isTerminated”吗?
文档中关于 NSRunningApplication 的通知,属性 terminated
指定 getter isTerminated
,而不是默认的 getter terminated
。 (这是有道理的,因为 bool 属性是"is"或“不是”)
这表明 obj-c 属性解析中可能存在错误,其中 getter 的名称用于 KVO 路径。
关于objective-c - NSRunningApplication 'terminated' 不可观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4128002/