【问题标题】:How can I detect that there are parts of the code that do not match the ios version?如何检测到部分代码与 ios 版本不匹配?
【发布时间】:2020-11-13 08:50:01
【问题描述】:

我在项目中使用了各种功能。比如iOS 12之后的图库。比如iOS 12之后的OTP功能

应用程序版本设置为 ios 11。但我希望它在代码中发出警告。看不到

我能否收到类似“您必须打开一个 if 块才能使用此功能”之类的消息?

【问题讨论】:

    标签: ios objective-c swift xcode


    【解决方案1】:

    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 级别设置它。

    【讨论】:

    • 所以我需要关注哪个ios版本使用这个?我需要找到自己吗?
    • 我以为您说您将目标设置为 iOS 11?我更新了答案......你使用的是什么版本的 Xcode
    • 我的开发目标是 iOS 11。我添加了一个新功能,包括一次性密码,但它需要是 ios 12 及更高版本。此外,我写了代码 1 行,但我没有用 if 块(版本控制)阻止它。当我测试应用程序时它崩溃了。 Xcode 没有显示(比如“你正在使用这个,但你的开发目标是 ios 11,你需要使用 if block”)
    • _txtLoginPhoneCode.contentMode = UITextContentTypeOneTimeCode;
    • Warn if an API that is newer than the deployment target is used without "if (@available(...))" guards. = CLANG_WARN_UNGUARDED_AVAILABILITY 或 @skaak 提到了标志。
    猜你喜欢
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    相关资源
    最近更新 更多