2015-09-12 14 views
14

Ich habe eine Swift-Klasse, die mit mehreren Zielen mit unterschiedlichen Einsatzzielen verknüpft ist, das Hauptprojekt hat iOS 7-Mindestanforderungen und es gibt eine Erweiterung mit iOS 8-Ziel. JetztWarnung: Unnötige Überprüfung des Mindesteinsatzziels

wenn ich Projekt kompilieren, führt der Compiler auf dieser Codezeile Warnung:

if #available(iOS 8.0, *) { ... } 

„Unnötige Prüfung für‚iOSApplicationExtension‘; minimale Implementierungsziel Halter sorgt für immer wahr sein“

I habe die Optionen für Build-Einstellungen überprüft und keine Option gefunden, um schnelle Warnungen zu löschen.

Ich versuchte iOSApplicationExtension Version Ziel separat von dieser Linie, aber ohne Erfolg zu definieren:

if #available(iOS 8.0, iOSApplicationExtension 8.0, *) { ... } 

Gibt es eine Möglichkeit zu unterdrücken diese lästige Meldung?

+1

siehe Link mit Ihnen helfen kann https://forums.developer.apple.com/thread/15030 –

+1

Wahrscheinlich Ihr minimales Implementierungsziel für die Erweiterung iOS ist 8. Dieser dass '#available bedeuten wird (iOS 8.0, 0) 'wird immer wahr sein, dh es ist unnötig. –

+0

@ILikeTau App-Erweiterungen funktionieren nur auf iOS 8+. Deshalb habe ich das getan. – Mousavian

Antwort

1

eine hässliche Abhilfe gefunden Warnung zum Schweigen zu bringen, aber ich hoffe, dass es einen besseren Weg:

In iOS 8+ Ziele Einstellungen bauen, habe ich eine precompile Flagge in Build-Einstellungen definiert -> Swift Compiler - Benutzerdefinierte Flags -> andere Swift Flags:

-D iOS8target

Dann änderte ich Code auf diese Art und Weise:

#if iOS8target 
    // iOS 8+ compatible code 
#else 
    if #available(iOS 8.0, *) { 
     // repeat iOS 8+ compatible code again! 
    } else { 
     // iOS 7 code 
    } 
#endif 

Es ist nicht refaktoriert und hässlich, aber es funktioniert!

UPDATE: Es gibt einen schnellen Compiler-Schalter -suppress-warnings alle Warnungen zu verzichten. Aber es unterdrückt auch nützliche Warnungen. Auch wenn es nur eine bestimmte Datei gibt, die Warnungen ausgibt, können Sie das Flag -w im Bereich Bauphasen verwenden. Es wird auch nützliche Warnungen unterdrücken, aber auf eine Datei beschränkt.

+4

Ich würde lieber mit der Warnung leben: S – nobre

1

Die nächste Version von Cocoapod (nach 0.39.0) sollte dieses Problem behoben haben. Überprüfen Sie this für weitere Details.

0

Bitte überprüfen Sie Ihr Implementierungsziel in Ihrem Allgemein und setzen Sie von 9.0 auf 7.0 oder weniger. Diese Warnung wird automatisch entfernt.

+0

gibt es verschiedene Projekte, die gleiche Quelldatei verwenden. kann es nicht ändern. einige müssen 8+ – Mousavian

+0

sein, wenn es von ios8 + veraltet ist, dann müssen Sie für beide mit alter und neuer Klasse kodieren. Es gibt keine Option. Versuchen Sie, das Bereitstellungsziel auf 8 festzulegen. –

Verwandte Themen