【问题标题】:Can I mix Catalyst with MacOS target?我可以将 Catalyst 与 MacOS 目标混合使用吗?
【发布时间】:2021-06-25 02:00:44
【问题描述】:

环境: Mac mini M1;和
iPhone 6s Plus 等
Mac OS 11+、iOS 14+

我使用的是 SwiftUI/Combine Frameworks 与 Storyboard。

场景:我有一个 iOS 应用程序,我想将其扩展为 MacOS 姊妹应用程序;
并且可能还会添加更多功能。

我假设“Catalyst”是 iOS 端的一个选项,可以将其映射到 MacOS 环境,而无需编写代码。

我还假设从这个基线开始,我可以创建一个 MacOS 目标并在两者之间共享通用代码,并添加编译器指令来分隔 MacOS 和 iOS 细节。

我说的对吗?

【问题讨论】:

    标签: macos swiftui catalyst


    【解决方案1】:

    给定一个启用 Catalyst 的 iOS 目标(例如选中“Mac”复选框),您可以使用任何在 iOS 和 Catalyst 中标记为可用的框架/功能。

    您还可以使用以下方式有条件地为不同的系统编译:

    #if targetEnvironment(macCatalyst)
    

    或各种@available 配置(https://nshipster.com/available/)。

    如果您的问题是您是否可以使用特定于 macOS 的代码(在 Catalyst 中未标记为可用),例如 AppKit,那么问题就会变得更加复杂。可以导入和使用带有 AppKit 代码的捆绑包,但这不是我所说的简化流程。见:https://www.highcaffeinecontent.com/blog/20190607-Beyond-the-Checkbox-with-Catalyst-and-AppKit

    【讨论】:

    • 该链接侧重于 AppKit 与 SwiftUI/Combine。 SwiftUI 的优点之一是纯代码可在两个平台上使用。我将尝试通过捆绑包增强 MacOS 部分的可能性。谢谢。
    • “纯代码”可能在两个平台上都可用。两者之间有很多功能明显不同的“陷阱”。我在两个平台的 App Store 中都有两个应用程序——一个有 Catalyst,一个没有。如果我不得不重来一遍,我可能会避免使用 Catalyst。
    • '避免使用催化剂'——为什么? --- 如果你已经支持 OS X,我想你就不需要催化剂了。
    • 只有在 Catalyst 中才会出现一大堆错误,特别是与点击行为有关的错误。见:stackoverflow.com/questions/65996725/…
    • 哇。好的。我会避免使用催化剂;反正我也不需要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 2014-07-23
    • 2019-06-09
    • 1970-01-01
    相关资源
    最近更新 更多