【发布时间】:2020-11-13 08:50:01
【问题描述】:
我在项目中使用了各种功能。比如iOS 12之后的图库。比如iOS 12之后的OTP功能
应用程序版本设置为 ios 11。但我希望它在代码中发出警告。看不到
我能否收到类似“您必须打开一个 if 块才能使用此功能”之类的消息?
【问题讨论】:
标签: ios objective-c swift xcode
我在项目中使用了各种功能。比如iOS 12之后的图库。比如iOS 12之后的OTP功能
应用程序版本设置为 ios 11。但我希望它在代码中发出警告。看不到
我能否收到类似“您必须打开一个 if 块才能使用此功能”之类的消息?
【问题讨论】:
标签: ios objective-c swift xcode
Xcode 确实提供了这些类型的警告?!
当使用目标 iOS 版本中不可用的东西时,您应该会得到类似“feature 仅在 iOS 12.0 或更高版本中可用”的信息。平时需要守护的人
if ( @available( iOS 12, * ) )
警告就会消失。
基于评论
我假设根据您将版本设置为 11 的问题,但根据您的评论,您需要正确设置它,例如在目标旁边的 Xcode 中,它应该看起来像这样(对于 iOS 10)。
如果你在没有警卫的情况下使用它,你应该会收到类似于这个的警告
-Wunguarded-availability 和 -Wunguarded-availability-new 编译器标志应该打开(默认),但您可以在其他警告标志下的项目构建设置中强制此。
更新
我为此使用了 Xcode 12.1。创建了一个新的默认 iOS 项目。然后在target中选择iOS 11,如下图。
然后,我向项目创建的视图控制器添加了一个文本字段,将其链接为如下所示的属性,然后立即弹出您正在寻找的警告。
感谢 Ol Sen Xcode 设置
根据 Ol Sen 的评论 - 是的,请检查是否已启用。应该是默认的。请注意,您可以在目标下设置它,但如图所示,最好在 project 级别设置它。
【讨论】:
Warn if an API that is newer than the deployment target is used without "if (@available(...))" guards. = CLANG_WARN_UNGUARDED_AVAILABILITY 或 @skaak 提到了标志。