为何部署目标版本更高时Xcode仍要求添加#available可用性检查?
问题原因及解决方案
这个问题和UIImage扩展本身没有特殊关联,属于部署目标配置不一致或Xcode缓存问题,按以下步骤排查即可:
- 检查该UIImage扩展对应的Swift文件的单独部署配置:打开Xcode右侧「文件检查器」,选中该.swift文件后,查看Target Membership下方的iOS Deployment Target是否被单独设置为低于14.0的版本,单个文件的部署配置优先级高于项目全局配置,这也是其他文件使用
Logger无告警的最常见原因。 - 检查扩展是否手动添加了低版本可用性声明:如果你给该UIImage扩展手动加了
@available(iOS 13.0, *)这类全局可用性标识,该标识优先级会高于项目部署目标,编译器会判定该扩展需要兼容iOS13,自然会对iOS14+的LoggerAPI抛出告警。 - 清理Xcode缓存执行:
Command + Shift + K清理构建文件夹,再删除~/Library/Developer/Xcode/DerivedData下对应项目的缓存目录,重启Xcode后重新构建即可消除缓存导致的配置不生效问题。 - 确认多Target部署版本统一:如果你的UIImage扩展被多个Target引用,检查所有引用该文件的Target的部署目标是否都≥14.0,只要存在一个低版本Target就会触发告警。
如果不需要兼容低于iOS14的版本,完成上述配置后就不需要再对Logger的调用做额外的可用性判断。
内容的提问来源于stack exchange,提问作者Alex Dong
相关产品推荐
相关产品推荐

