在Xcode 4.6中,我基于“命令行工具”项目模板创建了一个新应用程序。 如何以编程方式从该“命令行工具”应用程序启动另一个应用程序(.app应用程序包)?
答案 0 :(得分:3)
使用启动服务和/或NSWorkspace
可以通过多种方式实现此目的。
标识捆绑应用程序的一种更灵活的方法是通过其捆绑标识符(CFBundleIdentifier
),这是一个类似com.apple.TextEdit
的字符串。这使您可以识别应用程序,而无需对将要找到应用程序的假定路径进行硬编码,或者通过硬编码应用程序包的名称,这两者都可以轻松更改。您可以使用NSWorkspace
的{{3}}来启动该应用。如果您还不知道它,可以通过检查其AppName.app/Contents/Info.plist
文件来获取应用程序包的包标识符。然后使用以下代码:
if (![[NSWorkspace sharedWorkspace]
launchAppWithBundleIdentifier:@"com.apple.TextEdit"
options:NSWorkspaceLaunchDefault
additionalEventParamDescriptor:NULL
launchIdentifier:NULL]) {
NSLog(@"launching app failed!);
}
重要提示:NSWorkspace
是AppKit.framework
框架的一部分,该框架最初未包含在“命令行工具”项目模板中。要将其添加到项目中,请在目标列表中选择目标,如下图所示,然后单击+按钮添加其他框架。
同时添加AppKit.framework
和Cocoa.framework
。
这将导致所有3个列在Link Binary With Libraries步骤中。此时,您可以从关联阶段删除Foundation.framework
和AppKit.framework
,只留下Cocoa.framework
,如下所示:
答案 1 :(得分:0)
你试过“开放”吗?至少在终端“打开”运行文件和/或应用程序。