Xcode编译标志以阻止可空性警告不起作用?

时间:2016-06-07 23:29:17

标签: ios objective-c xcode

在有限的时间内,我想抑制编译器在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

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

4 个答案:

答案 0 :(得分:22)

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

答案 1 :(得分:3)

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

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

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

NS_ASSUME_NONNULL_BEGIN
NS_ASSUME_NONNULL_END

答案 2 :(得分:2)

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

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

通过将其添加到 Swift 编译器选项(在构建设置中搜索OTHER_SWIFT_FLAGS)来解决此问题:

-Xcc -Wno-nullability-completeness

答案 3 :(得分:2)

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

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