Cocoa:为现有GUI应用程序添加命令行功能

4

我有一个现有的GUI Mac应用程序,想要添加命令行调用功能。例如,GUI应用程序名为“Gallifrey”,可以查找扮演博士和可选同伴的演员。GUI具有年份文本字段、“And companion”复选框和查找按钮。从命令行来看,我想应该是:

> gallifrey -y2014 -c 
> Peter Capaldi, Jenna Coleman

我在apple-dev上发现了一种解决方案,链接:http://lists.apple.com/archives/cocoa-dev/2009/Oct/msg01480.html。那仍然是建议的解决方案吗?我考虑将逻辑移入XPC服务并捆绑一个单独的命令行目标,但这似乎过于复杂。

编辑:为了明确起见,我不是在问如何解析参数,我已经做到了,只是如何决定启动GUI还是返回答案。

1
你可以在main.m中注释掉NSApplicationMain,并在ApplicationDidFinishLaunching中实现主窗口的启动或不启动。答案在这里...我不确定它是否是规范的。我猜我的建议与你的链接不同之处在于它会保留你在<NSApplicationDelegate>方法中的任何引导程序,但只是取消GUI启动。你可以拥有一个完整的应用程序,没有Dock图标或菜单,所以没有理由不启动应用程序。 - stevesliva
2个回答

1

选项 2

编辑您的main()函数,并在其中决定是否返回答案而不是启动NSApplicationMain。这样,您可以保持一个应用程序、一个可执行文件,支持两种启动方式。


0

选项1

将您应用程序的所有代码移动到框架中(您自己的框架在您自己的应用程序包中)。

创建单独的GUI和CLI应用程序目标,并使它们都链接到具有所有所需功能的框架。

  • 链接的框架使所有内容都在同一进程中可用,因此需要进行的代码更改最少,而且无需担心XPC。

  • 缺点是您的CLI不是独立的可执行文件,而是需要存在于应用程序包中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接