我可以将 Catalyst 与 MacOS 目标混合使用吗?

问题描述

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

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

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

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

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

我说得对吗?

解决方法

给定启用 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