1

在 Xcode 4.6 中,我基于“命令行工具”项目模板创建了一个新应用程序。

如何以编程方式从该“命令行工具”应用程序启动另一个应用程序(.app 应用程序包)?

4

2 回答 2

3

有很多方法可以实现这一点,使用 Launch Services 和 or NSWorkspace

识别捆绑应用程序的一种更灵活的方法是通过其捆绑标识符 ( CFBundleIdentifier),它是一个类似于com.apple.TextEdit. 这允许您识别应用程序,而无需硬编码将找到应用程序的假定路径,或者通过硬编码应用程序包的名称,用户可以轻松更改这两者。您可以使用NSWorkspace'slaunchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:启动应用程序。如果您还不知道它,您可以通过检查应用程序包的AppName.app/Contents/Info.plist文件来获取应用程序包的包标识符。然后使用以下代码:

if (![[NSWorkspace sharedWorkspace]
       launchAppWithBundleIdentifier:@"com.apple.TextEdit"
                             options:NSWorkspaceLaunchDefault
      additionalEventParamDescriptor:NULL
                    launchIdentifier:NULL]) {
      NSLog(@"launching app failed!);
}

重要:NSWorkspaceAppKit.framework框架的一部分,最初不包含在“命令行工具”项目模板中。要将其添加到您的项目中,请在目标列表中选择目标,如下图所示,然后单击 + 按钮添加其他框架。

在此处输入图像描述

同时添加AppKit.frameworkCocoa.framework

这将导致所有 3 个都列在 Link Binary With Libraries 步骤中。此时,您可以从链接阶段同时删除Foundation.frameworkAppKit.framework,只保留Cocoa.framework,如下所示:

在此处输入图像描述

于 2013-03-18T19:17:14.193 回答
1

你试过“打开”吗?至少在终端“打开”运行文件和/或应用程序。

于 2013-03-18T18:42:44.957 回答