NSRunningApplication'终止'不可观察

Iai*_*ney 13 macos cocoa objective-c

我正在构建一个程序,启动另一个程序,然后应该监视它,并在它终止时采取行动.启动应用程序后,我可以从NSWorkspace获取NSRunningApplication的实例.

现在,文档声明NSRunningApplication具有可以观察键值的属性"已终止".我试过实施:

[browserInstance addObserver:self 
                          forKeyPath:@"terminated"
                             options:NSKeyValueObservingOptionNew
                             context:NULL];
Run Code Online (Sandbox Code Playgroud)

和:

- (void)observeValueForKeyPath:(NSString *)keyPath 
                      ofObject:(id)object 
                        change:(NSDictionary *)change
                       context:(void *)context  
{  

        NSLog(@"observeValueForKeyPath");  
        if ([keyPath isEqual:@"terminated"])  
        {  
            NSLog(@"terminated");  
        }  
} 
Run Code Online (Sandbox Code Playgroud)

但我从来没有看到observeValueForKeyPath方法被绊倒.如果有可能,有谁知道如何使这项工作?我无法在网上找到任何具体的例子.

bob*_*vil 16

您是否尝试过keyPath"isTerminated"?

请注意,在NSRunningApplication的文档中,该属性terminated指定了getter isTerminated,而不是默认的getter terminated.(这是有道理的,因为布尔属性"是"或"不是")

这表明obj-c属性解析中可能存在错误,其中getter的名称用于KVO路径.


Pet*_*sey 0

它插入的\xe2\x80\x9cis\xe2\x80\x9d 问题:你已经验证了不是browserInstancenil对吗?

\n