2010-05-17 17 views
8

Ähnlich wie Ben Gottlieb's question habe ich eine Handvoll veralteter Aufrufe, die mich nervig machen. Gibt es eine Möglichkeit, Warnungen nach Zeilen zu unterdrücken? Zum Beispiel:Zeilenspezifische XCode-Compiler-Warnungen werden unterdrückt

if([[UIApplication sharedApplication] 
    respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) { 

    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
} else { 
    [[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; //causes deprecation warning 
} 

Alles, was mich interessiert, ist diese Linie. Ich möchte nicht alle Verwarnungen deaktivieren. Ich würde auch eher etwas wie suppress specific warnings by file nicht machen.

Es gab ein paar andere Umstände, wo ich eine bestimmte Zeile als okay markieren wollte, obwohl der Compiler eine Warnung generiert. Ich möchte im Wesentlichen mein Team wissen lassen, dass das Problem gelöst wurde und nicht mehr immer wieder über die gleiche Leitung gestört wird.

Antwort

5

Vincent Gable hat eine interessante Lösung gepostet. Kurz:

@protocol UIApplicationDeprecatedMethods 
- (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated; 
@end 

if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) { 
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
} else { 
    id<UIApplicationDeprecatedMethods> app = [UIApplication sharedApplication]; 
    [app setStatusBarHidden:YES animated:NO]; 
} 
+0

kühlen. Ich schätze, das funktioniert, um den Verwarnungswarnungen auszuweichen. Die abstraktere Frage ist jedoch noch offen. Gibt es eine Möglichkeit, eine bestimmte Warnung in XCode zu unterdrücken? – MrHen

+1

Leider ist es meistens alles oder nichts. Durch die Verwendung von '#pragma GCC diagnostic ...' (http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html) können Sie eine bestimmte Warnung pro Datei in einem mehr deaktivieren offensichtlicher als die Build-Einstellungen pro Datei. Es erfordert GCC 4.2+ und muss ganz oben in einer Übersetzungseinheit platziert werden. –

+1

@ matt-b FYI, ich glaube, ich habe einen besseren Weg gefunden, mit den Verwarnungswarnungen umzugehen. Wenn ich UIApplication auf (ID) umsetze, verschwindet der Fehler. Kannst du dir einen Grund vorstellen, warum das unpassend ist? – MrHen

0
if([[UIApplication sharedApplication] 
    respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) { 

    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
} else { 
    [(id)[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; 
} 
Verwandte Themen