问题描述
环境: 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