如何有选择地忽略clang关于使用已弃用的objective-c实现的警告?

Hea*_*ers 11 objective-c pragma clang suppress-warnings

我正在为iOS 5.1 更新MGSplitViewController,我想要警告使用不推荐使用的Objective-C方法.不幸的是,MGSplitViewController支持iOS 3.2,所以我想支持所有已弃用的回调,但忽略有关它们的警告.

CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS在目标构建设置中启用了有关"覆盖弃用的Objective-C方法"()的警告,但我不能忽略它

#pragma clang diagnostic push
#pragma clang diagnostic ignored "CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS"

- (void) deprecated_objc_method_override {
}

#pragma clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)

Hea*_*ers 28

CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS对应于-Wdeprecated-implementations,Xcode没有在其"快速帮助"区域中显示.以下是有效的:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-implementations"

- (void) deprecated_objc_method_override {
}

#pragma clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)

  • 如果可能不需要修改实际源,则另一个选择是在编译特定文件时关闭警告(例如那些实现MGSplit类的文件.例如,将编译器标志传递给那些实现文件,如`-Wno-deprecated- implementations` (2认同)

jrc*_*jrc 13

还有相关的deprecated-declarations旗帜.这会抑制警告,例如"'foo'已被弃用:首先在OS X 10.10中弃用 - 请改用-bar".

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

   :

#pragma clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)