2012-07-16 10 views
7

Sto aggiornando MGSplitViewController per iOS 5.1 e desidero essere avvisato sull'utilizzo di metodi Objective-C obsoleti. Sfortunatamente, MGSplitViewController supporta iOS 3.2, quindi voglio supportare tutti i callback deprecati, ma ignorare gli avvisi su di essi.Come ignorare selettivamente gli avvertimenti di clang sull'utilizzo di implementazioni obiettive-c deprecate?

ho attivato gli avvisi di "imperativi deprecato Objective-C Metodi" (CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS) nel mio impostazioni di generazione di destinazione, ma non posso ignorarlo con

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

- (void) deprecated_objc_method_override { 
} 

#pragma clang diagnostic pop 

risposta

18

CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS corrisponde a -Wdeprecated-implementations, che doesn Xcode mostrare nella sua area "Guida rapida". Così le seguenti opere:

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

- (void) deprecated_objc_method_override { 
} 

#pragma clang diagnostic pop 
+2

Un'altra opzione, se la modifica del effettivamente fonte potrebbe non essere voluto, è quello di spegnere l'allarme durante la compilazione di file specifici (come quelli che implementano le classi MGSplit. Ad esempio, passando flag di compilazione solo per i file di implementazione come '-Wno-deprecato-implementations' –

6

C'è anche la correlata deprecated-declarations bandiera. Questo sopprime gli avvertimenti come "'pippo' è deprecato: prima deprecato in OS X 10.10 - Usa -bar invece".

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

    : 

#pragma clang diagnostic pop