2016-03-30 10 views
1

Ein Xcode-Projekt hat die folgenden Einstellungen:Wie kann man wissen, welche API in welchem ​​iOS SDK nicht verwendet werden kann?

  • Deployment target: iOS 9.0
  • Base SDK: iOS 9.3 (latest)

Wie ich es verstanden, kann die App auf iOS 9.0 und möglicherweise installiert werden versuchen, eine API zuzugreifen, die nur verfügbar seit iOS 9.3. In diesem Fall würde die App abstürzen.

Wie kann ich leicht herausfinden, welche APIs, auf die die App zugreift, in keiner Version zwischen dem Implementierungsziel und der Version vor dem Basis-SDK verfügbar sind? Da das Implementierungsziel dem Compiler bekannt ist, sollte es keine Warnung ausgeben, wenn eine API in Code verwendet wird, der die App offensichtlich zum Absturz bringen wird, wenn sie unter einer iOS-Version unterhalb der Einführung ausgeführt wird?

+1

es gibt einen neuen Compiler-Flag, die Sie in Xcode versuchen können 7,3, obwohl es viele Fehlalarme erhöhen wird, auch, da es nicht den Kontext nicht berücksichtigt. Überprüfen Sie diese Antwort: http://stackoverflow.com/questions/34013293/why-does-objective-c-not-have-api-availability-checking/34040901#34040901 – hagi

Antwort

2

Sie überprüfen dies in den Header-Dateien.

Die API ändert sich nicht zwischen iOS 9 und iOS 9.3, Sie sind also sicher. Auf der anderen Seite können Nutzer, die iOS 8 verwenden, Ihre App nicht ausführen. Das bedeutet weniger Nutzer, weniger Umsatz, weniger Geld.

Wenn Sie auf 8.0 zum Einsatz, Sie ganz einfach bei der Kompilierung überprüfen können, ob Sie einige neue APIs verwenden, indem vorübergehend die Basis SDK 8.0 zu ändern. In diesem Fall würde man sicher noch keine iOS 9 Methoden auf iOS nennen machen müssen 8.

1

Sie sollten die Klasse überprüfen (‚NewFeature‘, wobei jede 9.3-Feature-Class, die Sie, dass du Aufruf ist)

if ([NewFeature class]){ 
    //then use it if available 
    //The code will land here if it is available to the OS the device is using 
}else{ 
    //use older alternative way 
}