仅构建visionOS应用时,os(iOS)指令内代码被误用问题咨询
问题原因与解决方案
核心原因
在Xcode 15 beta 5这类早期测试版本中,os(iOS)编译条件会包含visionOS平台。这是因为visionOS基于iOS技术栈构建,编译器的平台检测逻辑尚未完全将两者独立开,属于Apple为方便iOS代码迁移到visionOS设置的临时兼容策略,并非意味着visionOS是iOS的正式子平台。
解决方案
要严格区分iOS与visionOS代码,可采用以下方式:
- 标记纯iOS专属代码:使用
#if os(iOS) && !os(visionOS);如果项目仅支持iOS和visionOS,也可以直接用#if !os(visionOS) - 标记visionOS专属代码:直接用
#if os(visionOS)
注意:后续Xcode正式版本大概率会调整编译条件的判断逻辑,让os(iOS)仅对应iOS平台,届时可切换回常规的os(iOS)判断。
内容的提问来源于stack exchange,提问作者Robert Dresler
相关产品推荐
相关产品推荐

