objective-c - 无 GUI 应用程序包

标签 objective-c cocoa command-line

我想创建一个没有 GUI 但可以访问应用程序包的辅助应用程序。我正在查看 Xcode 命令行项目模板,但这些都只是生成可执行文件。我如何创建类似命令行工具的东西,它不显示应用程序菜单但提供对 .app 中捆绑资源的访问?我是不是想错了?

谢谢。

最佳答案

Peter 的答案(使用 LSUIElement)可能就是您要找的。有时,我想创建一个实际的命令行应用程序,它也有一个应用程序包。如果其他人遇到相同的情况,这就是我发现的...

应用程序包不是可执行文件。真正的可执行文件隐藏在里面:MyApp.app/Contents/MacOS/MyApp 是名为 MyApp 的应用程序的实际 Mach-O 可执行文件。标准的 Xcode 模板将应用程序链接到 AppKit.framework 并有一个 main.m,它为启动 NSApplication 实例的可执行文件定义 main() 函数。但是,您可以将任何可执行文件放入应用程序包中,包括仅限控制台的应用程序。只需将应用程序模板中 main.m 中的 main() 函数替换为您的控制台应用程序 main() 函数,并从中删除 AppKit.framework应用程序的链接框架。

如果你愿意,如果你想完全避免使用 Objective-C,你可以用一个声明了 main 函数的 main.c 替换 main.m(尽管如果你替换内容,main.m 中没有什么是特定于 Objective-C 的) main() 函数)。

要从控制台运行您的应用程序,您必须指定实际的可执行文件,而不是应用程序包,因此您必须在命令中键入 MyApp.app/Contents/MacOS/MyApp线。当我为控制台应用程序使用应用程序包(以提供链接的框架、资源等)时,我经常创建一个指向可执行文件的符号链接(symbolic link),并将符号链接(symbolic link)放在/usr/local/bin (或路径上的其他地方)安装或首次运行。

关于objective-c - 无 GUI 应用程序包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226749/

相关文章:

ruby - 从命令行提供当前目录

objective-c - 如何通过 Cocoa 查找 mac os 中的显示器数量?

objective-c - Objective-C 和 Cocoa 中的 SQLite 访问

c# - 为什么我在定义自定义配置文件时收到 TypeLoadException?

ios - 使用 XIB 的自定义 NSView/UIView 子类?

objective-c - 持久 '<class>' 可能无法响应 +method

linux - 获取屏幕输出行作为命令的参数

iOS - 应用程序在循环过程中崩溃而没有错误

objective-c - 使用 Init 方法的 Obj-C 分配警告

javascript - 如何在 uiwebview 中使用 javascript 来获取点击的按钮 ID?