Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I selectively ignore clang's warnings about use of deprecated objective-c implementations?

I'm updating MGSplitViewController for iOS 5.1, and I want to be warned about usage of deprecated Objective-C methods. Unfortunately, MGSplitViewController supports iOS 3.2, so I want to support all deprecated callbacks, but ignore warnings about them.

I've enabled warnings about "Overriding Deprecated Objective-C Methods" (CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS) in my target build settings, but I can't ignore it with

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

- (void) deprecated_objc_method_override {
}

#pragma clang diagnostic pop
like image 318
Heath Borders Avatar asked Jul 16 '12 14:07

Heath Borders


2 Answers

CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS corresponds to -Wdeprecated-implementations, which Xcode doesn't show in its "Quick Help" area. So the following works:

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

- (void) deprecated_objc_method_override {
}

#pragma clang diagnostic pop
like image 200
Heath Borders Avatar answered Nov 11 '22 23:11

Heath Borders


There's also the related deprecated-declarations flag. This suppresses warnings like "'foo' is deprecated: first deprecated in OS X 10.10 - Use -bar instead".

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

   :

#pragma clang diagnostic pop
like image 29
jrc Avatar answered Nov 11 '22 22:11

jrc