And*_*eas 4 macos cocoa macos-carbon
我正在开发一个多平台演示应用程序,它由两部分组成:编辑器部分和查看器部分.这两个部分都是作为单独的程序开发 用户使用编辑器和编辑器编辑各个幻灯片,然后在用户想要查看他的演示文稿时启动查看器.
在Windows上,编辑器可以通过执行ShellExecute()来简单地运行查看器.在Linux系统上,编辑器可以只是fork()查看器,但在Mac OS X上,由于臭名昭着的应用程序包概念,这看起来很复杂.
我想知道如何在Mac OS X上解决这个问题.
是否可以在单个应用程序包中包含多个应用程序,还是将编辑器和查看器组件存储为单独的应用程序包?
另外,我如何将信息从编辑器传递给查看器应用程序?即观众需要知道要显示的文件.在Windows和Linux上,我可以将它作为命令行参数传递给WinMain()或main()函数.在OS X上,看起来LSOpenApplication()可以完成这项工作,但现在已弃用.我不知道LSOpenApplication()是否可以在同一个应用程序中打开应用程序,因为我不知道这是否可能......
有人可以对这个话题有所了解吗?谢谢!
是否可以在单个应用程序包中包含多个应用程序,还是将编辑器和查看器组件存储为单独的应用程序包?
是的,是的.
每个应用程序必须是自己的捆绑包.但是您可以自由地在捆绑包中包含捆绑包.这甚至不常见.例如,查看iTunes内部:
/Applications/iTunes.app/Contents/MacOS$ ls -l
total 116816
-rwxr-xr-x 1 root wheel 56643216 Oct 15 09:29 iTunes
-rwxr-xr-x 1 root wheel 42608 Oct 16 20:31 iTunesASUHelper
drwxr-xr-x 3 root wheel 102 Oct 16 20:33 iTunesHelper.app
-rw-r--r-- 1 root wheel 3617952 Oct 16 20:31 libgnsdk_dsp.3.06.0.dylib
-rw-r--r-- 1 root wheel 328928 Oct 16 20:31 libgnsdk_link.3.06.0.dylib
-rw-r--r-- 1 root wheel 3831312 Oct 16 20:31 libgnsdk_manager.3.06.0.dylib
-rw-r--r-- 1 root wheel 1511792 Oct 16 20:31 libgnsdk_musicid.3.06.0.dylib
-rw-r--r-- 1 root wheel 655328 Oct 16 20:31 libgnsdk_submit.3.06.0.dylib
Run Code Online (Sandbox Code Playgroud)
看看iTunesHelper.app里面的生活如何iTunes.app?还有命令行工具iTunesASUHelper?这很好,很正常.只需在复制文件构建阶段将其移动到那里.
现在启动应用程序的常用工具是NSWorkspace.对于您的特定情况,您可能想要openFile:withApplication:.您可能还想查看XPC,看看它是否更符合您的需求.它允许更容易的进程间通信,但我发现它最适合帮助程序服务而不是完整的GUI应用程序.
| 归档时间: |
|
| 查看次数: |
896 次 |
| 最近记录: |