gpt4 book ai didi

swift - 如何将一个 Cocoa 应用程序嵌入另一个 Cocoa 应用程序并将其作为子进程启动

转载 作者:行者123 更新时间:2023-11-28 11:33:34 25 4
gpt4 key购买 nike

我想在另一个应用程序 B 中嵌入一个应用程序 A。当应用程序 A 启动时,它应该充当包装器并在内部启动应用程序 B,而不在文档栏中显示应用程序 B。应用程序 A 的目的只是一个包装器,它应该做一些启动应用程序 B 的初始化取决于它从哪里启动

最佳答案

在您的项目中,使用不同的目标构建这两个应用。

在 App A > Target > Build Phases 中:

  • 将应用程序 B 添加到目标依赖项
  • 将 App B 的产品添加到 Copy Bundle Resources 阶段。

现在,当您构建 App A 时,Xcode 将构建 App B 并将完成的 App B 复制到 App A 包的 Resources 文件夹中。

你没有解释为什么你想这样做,所以这里有一些想法可以帮助你开始......

选项 A:

使用 NSBundle 类定位嵌入式应用程序 B 并以您认为合适的方式启动它(直接使用 launchd 等)。

如果您不希望应用程序 B 出现在停靠栏中或有菜单栏,您需要在应用程序的 Info.plist 中设置 LSUIPresentationMode 或以编程方式调整应用的 activationPolicy 属性。

选项 B:

考虑创建一个 XPC 服务。 XPC 服务是一种特殊的嵌入式可执行文件,macOS 会在您需要时为您启动它,并为您设置 XPC 连接,以便您可以与其交谈和工作。

参见 Creating XPC Services

XPC 也有一些设施,这样一个不露面的(非应用程序)帮助进程可以有一个 UI 出现在你的应用程序中。 (这就是 Safari 的工作方式;每个页面都由一个单独的辅助进程处理,使用 XPC 控制页面并将其显示在 Safari 窗口中。)

关于swift - 如何将一个 Cocoa 应用程序嵌入另一个 Cocoa 应用程序并将其作为子进程启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56232912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com