Da alle SDKs im Umlauf sind, ist es praktisch, für mehrere SDKs und Plattformen erstellen zu können. Wenn ich jedoch von 3.2 auf 3.0 und gelegentlich sogar auf 2.x hüpfe, erhalte ich häufig veraltete Warnungen bezüglich Methoden, die geändert oder ersetzt wurden:
warning: 'UIKeyboardBoundsUserInfoKey' is deprecated.
Gibt es eine Möglichkeit, diese Warnungen zu deaktivieren oder zu deaktivieren, da ich weiterhin die Kompatibilität mit älteren Betriebssystemen beibehalten möchte und mich auch bemühe, beim Erstellen "Rauschen" zu entfernen?
Antworten:
Versuchen Sie es
-Wno-deprecated-declarations
oder die entsprechende Einstellung in XcodeGCC_WARN_ABOUT_DEPRECATED_FUNCTIONS
(Tipp: Geben Sie einfach "veraltet" in die Build-Einstellungen ein, um die spezifische Einstellung für diese Warnung zu finden).Aktuelle Versionen von Xcode (zB Xcode 9.2):
Alte Versionen von Xcode (zB Xcode 2.x, 3.x):
quelle
Da ich dem @ samiq-Beitrag noch keinen Kommentar hinzufügen kann, denke ich, dass ich ihn erweitern werde. Geben Sie die erwähnte Direktive vor einer Funktion / Methode ein, in der Sie veraltete Inhalte verwenden. Anschließend können Sie die vorherige Einstellung nach der Definition des Funktionsende wiederherstellen:
quelle
#pragma GCC diagnostics push #pragma GCC diagnostics ignored "-Wdeprecated-declarations" .. .. Code here .. .. #pragma GCC diagnostic pop
da diese Methode Sie zu den zuvor festgelegten Einstellungen zurückführtClang bietet eine nette Funktion, die den Schritt "Wiederherstellen" im @ manicaesar-Post unabhängig vom anfänglichen Warnstatus macht:
Um das Clang- Handbuch zu zitieren :
quelle
Da wir in der Regel ältere Betriebssysteme unterstützen müssen, aber auf unsere Warnungen achten, wollte ich einen übersichtlicheren Weg, dies zu tun. Ich habe dies zusammengestellt, inspiriert von einem Mozilla-Code:
Auf diese Weise können Sie Folgendes tun:
Es funktioniert auch mit Codeblöcken:
Wenn Sie die Unterstützung für Geräte vor iOS 7 einstellen, können Sie den Code leicht durchsuchen, um die veralteten Verwendungen zu finden, die behoben werden müssen.
quelle
do { ... } while(0);
erforderlich?do{...}while(0);
hier besonders erforderlich ist? Warum nicht einfach{...}
? Warum nichtif(true){...}
? usw.Sie können Warnungen pro Datei auch mit unterdrücken
was es wiederum ein bisschen besser macht, als alle Warnungen einmal und zusammen zu unterdrücken ... schließlich müssen Sie wissen, wofür Sie es tun.
quelle
Wenn Sie die Warnung zum Implementieren einer veralteten Methode oder einer veralteten Klasse zum Schweigen bringen möchten , verwenden Sie:
quelle
Suchen Sie in Ihren Build-Einstellungen
Deprecated Functions
.quelle
Wenn Sie eine pauschale Überprüfung auf alle Arten von Abwertungen in einem Code wünschen. Bitte verwenden Sie das Flag -Wdeprecated wie folgt :
quelle
Fügen Sie die folgende Zeile oben in der Datei hinzu, um die Warnung aus der Header-Datei eines Drittanbieters zu deaktivieren
quelle