Objective c Xcode nsrunning应用程序终止

Objective c Xcode nsrunning应用程序终止,objective-c,cocoa,terminate,Objective C,Cocoa,Terminate,我有以下代码: NSWorkspace *sharedWorkspace = [NSWorkspace sharedWorkspace]; NSString *appPath = [sharedWorkspace fullPathForApplication:appName]; NSString *identifier = [[NSBundle bundleWithPath:appPath] bundleIdentifier]; NSArray *selectedApps = [NSRu

我有以下代码:

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)

当我调试应用程序并在指向appName的NSTextField中键入应用程序名称时,它会关闭我的应用程序,而不是我希望它终止的其他应用程序。我在另一个帖子上回答了这个问题,但是没有人回应,所以我想如果我开始一个新帖子,也许我可以得到回应。。。谢谢(这不是重复,只是当我回复bakc时人们没有回应…)

谢谢


Kevin

在项目的Info.plist中检查应用程序的捆绑标识,并确保其唯一性

此外,还应确定实际作为参数传递的selectedApps的值。要执行此操作,请记录它:

NSLog(@"selectedApps: %@", selectedApps); 
或者(Jon Hess在评论中建议),创建一个断点。您可以通过以下几种方式完成此操作:

  • 将光标放在当前行上,然后按Cmd键-\
  • (此链接显示已启用的断点)
设置断点后,选择运行->调试。这将在调试器(gdb)中执行您的程序。做你平时做的任何事,以达到失败的地步。但是,这次不是终止任何内容,而是在指定的行停止。此时,您可以检查变量。您可以通过发出“po”(打印对象)命令来打印objective-c实例。因此,您可能会得到如下结果:

(gdb)po appPath
    // gdb will print this
(gdb)po identifier
    // gdb will print this
(gdb)po selectedApps
    // gdb will print this

你能把代码部分重新格式化为代码吗?哦,我没意识到那是不可读的。与其使用log语句,不如花点时间来理解如何使用调试器。一种方法是在“[selectedApps makeObjectsPerformSelector:@selector(terminate)]行上放置一个断点,然后在调试器控制台中键入“po selectedApps”。能否提供更多信息?您的包标识符是什么?在终止调用之前,selectedApps的值是多少?好的,我可以从我的信息列表中给你bundle标识符,它是:com.cityconnection.${Helios:rfc1034identifier}我不确定selectedApps。我一开始并没有给它增加任何价值。我在上面的代码中调用变量selectedapps…凯文:使用调试器打印它。事实上,我得到“APP NAME的调试”正常结束“它实际上应该终止另一个正在运行的应用程序。。。