如何有条件地为 Catalyst 编译代码?
Posted
技术标签:
【中文标题】如何有条件地为 Catalyst 编译代码?【英文标题】:How can I conditionally compile code for Catalyst? 【发布时间】:2020-02-06 02:01:25 【问题描述】:我正在将 ios 应用程序移植到 Catalyst。 Catalyst (Mac) 版本将有自己的目标。
是否有官方方法可以为 Catalyst 有条件地编译代码?否则,我可以添加特定于目标的定义,但最好使用更通用的定义。
【问题讨论】:
你看到developer.apple.com/documentation/xcode/…了吗 - 它显示了你可以做什么。 我确实读过,但我没有看到任何关于条件编译的内容。 【参考方案1】:如文档 Creating a Mac Version of Your iPad App 中所见,您可以:
斯威夫特:
#if targetEnvironment(macCatalyst)
// Code specific to Mac.
#else
// Code to exclude from Mac.
#endif
目标-C:
#if TARGET_OS_MACCATALYST
// Code specific to Mac.
#else
// Code to exclude from Mac.
#endif
【讨论】:
谢谢!我专门寻找 Objective-C 并没有在那里看到答案。我应该在我的问题中说明这一点。 就在我提供的链接中。只需在页面顶部选择 Objective-C 而不是 Swift。 如果在桥接头中使用这个,还需要#import <TargetConditionals.h>
嘿,您知道是否有针对特定 mac 版本的方法吗?【参考方案2】:
也可以运行从 macCatalyst 中排除的代码,而无需使用 #else
。注意使用! (不是)。
#if !targetEnvironment(macCatalyst)
print("This code will not run on macCatalyst")
#endif
【讨论】:
以上是关于如何有条件地为 Catalyst 编译代码?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Angular 8 有条件地为一个组件制作两个 HTML 模板