【问题标题】:Xcode Compile Flag to Suppress Nullability Warnings not Working?Xcode 编译标志以抑制可空性警告不起作用?
【发布时间】:2016-10-08 01:05:58
【问题描述】:

在有限的时间内,我想抑制编译器在 Xcode 7.3.1 中向我显示的此类警告:

<File>: Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)

我已将此编译器标志添加到 My Target/Build Phases/Compile Sources 下的所有类中: -Wnullability-completeness

但它不起作用 - 仍然显示警告。我怎样才能摆脱警告?

【问题讨论】:

  • 你清除了现有的警告吗?

标签: ios objective-c xcode


【解决方案1】:

禁用这些警告,您需要:-Wno-nullability-completeness。注意no-;您使用的标志启用这些警告。

【讨论】:

  • 酷,适用于 .m 文件。知道如何为 .h 文件禁用它吗?
  • 我在 XCode 9(或 8)中添加了这个,方法是将它添加到 Build Settings -> Apple LLVM 9.0 - Custom compiler flags -> Other Warning Flags。你可以搜索Other Warning Flags
  • 在 Xcode 10 中,这已移至 Apple Clang - Custom Compiler Flags > Other Warning Flags
【解决方案2】:

请注意,在 Xcode 11 中它现在是 -Wno-nonnull

应该在目标的“Apple Clang - 自定义编译器标志”部分的“其他警告标志”中设置。

您还可以通过删除这些标志来避免这些警告并完全设置上述内容,Xcode 会自动添加到 Objective-C 中的新头文件中:

NS_ASSUME_NONNULL_BEGIN
NS_ASSUME_NONNULL_END

【讨论】:

  • 抱歉在 Xcode 11 的哪个字段下设置这个标志?
  • @hyouuu 我已更新问题以显示应设置的位置。
【解决方案3】:

使用混合源、ObjC 和 Swift 的项目时 Xcode 11.5 的设置:

WARNING_CFLAGS = $(inherited) -Wno-nullability-completeness
OTHER_SWIFT_FLAGS = $(inherited) -Xcc -Wno-nullability-completeness

【讨论】:

    【解决方案4】:

    在 Xcode 11.3 中,这些开始突然出现在我在 Github ci 上的纯 Swift 项目中。那是因为我正在导入 AWS Objective-C 开发工具包。

    令人困惑的是,这只会在第一次构建时发生,可能会为框架创建模块映射。因此,由于构建干净,这只是 ci 上的一个问题。

    通过将其添加到 Swift 编译器选项来修复它(在您的构建设置中搜索 OTHER_SWIFT_FLAGS):

    -Xcc -Wno-nullability-completeness
    

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 1970-01-01
      • 2010-12-03
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 2020-07-31
      相关资源
      最近更新 更多