Objective c NSRunningApplication-终止
如何使用Objective c NSRunningApplication-终止,objective-c,cocoa,xcode,terminate,Objective C,Cocoa,Xcode,Terminate,如何使用NSRunningApplication?我有一些与启动应用程序相反的东西: [[NSWorkspace sharedWorkspace] launchApplication:appName]; 但我想关闭一个。调试NSRunningApp的代码时出错,原因如下: NSRunningApplication *selectedApp = appName; [selectedApp terminate]; 有什么不对劲吗?如果有,请指出它以及如何修复它。您分配变量selectedAppa
NSRunningApplication
?我有一些与启动应用程序相反的东西:
[[NSWorkspace sharedWorkspace] launchApplication:appName];
但我想关闭一个。调试NSRunningApp
的代码时出错,原因如下:
NSRunningApplication *selectedApp = appName;
[selectedApp terminate];
有什么不对劲吗?如果有,请指出它以及如何修复它。您分配变量
selectedApp
aNSString
。字符串没有-(void)terminate
方法,因此会失败。必须获得指向该应用程序的NSRunningApplication
实例
NSWorkspace *sharedWorkspace = [NSWorkspace sharedWorkspace];
NSString *appPath = [sharedWorkspace fullPathForApplication:appName];
NSString *identifier = [[NSBundle bundleWithPath:appPath] bundleIdentifier];
NSArray *selectedApps =
[NSRunningApplication runningApplicationsWithBundleIdentifier:identifier];
// quit all
[selectedApps makeObjectsPerformSelector:@selector(terminate)];
appName
指的是什么?如果它字面上指的是一个NSString
,那么这将不起作用
由于NSRunningApplication
是一个类,因此必须创建一个实例以向其发送实例方法,就像处理任何其他类一样
有三种类方法(请参阅)可用于返回NSRunningApplication
实例:
+ runningApplicationWithProcessIdentifier:
+ runningApplicationsWithBundleIdentifier:
+ currentApplication
除非您需要基于当前应用程序的NSRunningApplication
实例,否则您可能会发现前两个类方法最有用
然后,您可以将
terminate
消息发送到NSRunningApplication
实例,该实例将尝试退出为其配置的应用程序。好,如果我没有收到,很抱歉。。。就像我的代码只从名字打开一个应用程序一样,类似的东西如何工作?就这一天。因为我不想将路径添加到需要关闭的应用程序中..我的新示例应该功能齐全Lok我发现这个错误,NSRunningApplication可能无法响应+RunningApplicationWithBundleIdentifier修复它,我应该更加关注api。好的,因此,我没有收到任何错误,但当我在文本框(appNAme)中键入应用程序的名称(如safari)并按enter键(退出)时,它只会退出我的程序,而不是safari。是的,这就是我所说的–您需要使用上述方法之一创建一个NSRunningApplication
实例;NSRunningApplication*selectedApp=[NSRunningApplication runningApplicationWithBundleIdentifier:identifier];[选择应用终止];dis仍然不工作,…appName是否为完整路径?您必须向bundleWithPath:
传递完整路径,它才能返回一个NSBundle
实例,然后可以调用该实例上的bundleIdentifier
。如果路径未满(或不是有效的捆绑包),则它将返回nil
。这实际上是另一个问题的重复(同一个问题:无法向错误类的实例发送消息):@Peter:只有解决方案是重复的,问题是唯一的。好的,伙计们,我们可以关注这个问题。。。没有人回应我。。。看看我在GS的回复下面的最新帖子!!!!