Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSRunningApplication-终止_Objective C_Cocoa_Xcode_Terminate - Fatal编程技术网

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
a
NSString
。字符串没有
-(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的回复下面的最新帖子!!!!