Frage

Ok Ich habe seit über einem Jahr iPhone-Apps zu entwickeln, aber es ist die eine Sache, die noch wirklich saugt.

Sagen wir, ich möchte meine app machen kompatibel mit iOS 3.0 Ich habe meine sdk auf die neueste Version verfügbar und setzte mein Implementierungsziel auf 3,0

Aber was passiert, rufen Sie, wenn Sie versehentlich eine Funktion nur in ... 3.1.x oder später? Richtig, es einfach abstürzt.

Es gibt keine Warnungen oder Indikatoren zu sagen Sie, dass eine Funktion ist nur in späteren iOS-Version. Und da der Emulator nicht Versionen unterstützen <4.0 ist es unmöglich, zu testen, ob die Anwendung wirklich funktioniert. Sie können nicht einmal ein neues Gerät kaufen, da sie bereits eine neuere iOS installiert haben. Und selbst wenn Sie ein älteres Gerät haben manchmal ist es fast unmöglich, jeden Teil des Codes zu überprüfen.

Und ich brauche wirklich ältere Versionen zu unterstützen, da ich weiß, dass meine Kunden (etwa 2/3) noch 3.x-Versionen verwendet werden.

Gibt es keine Code-Analysator oder etwas, das die Verfügbarkeit aller Funktionen innerhalb der App namens sucht?

In einem Fall die App abgestürzt, weil ich genannt

+ (id)sortDescriptorWithKey:(NSString *)key ascending:(BOOL)ascending

, die ich eine bequeme Methode von alloc +

- (id)initWithKey:(NSString *)key ascending:(BOOL)ascending;

(plus es ist Autoreleased) Aber sortDescriptorWithKey ist nur erhältlich in 4.0 @ _ @

War es hilfreich?

Lösung

hier gilt die gleiche Frage. Das einzige, was ich bis 3.0 die Base SDK des Projekts und Ziel gesetzt herausgefunden. Dann wird der Compiler überprüfen, ob Sie einige nicht vorhandene Methoden aufrufen.

Aber die Frage für einen Scanner noch existieren, weil die Methode oben wirft mir einige Fehler bei dem ASI HTTP-Framework. Also mein Verfahren soll

  1. die zu 3.0 SDK ändern
  2. gehen durch Fehler, die meine eigenen Code
  3. zugrunde liegen
  4. die Methoden ändern 3.0 kompatibel sein
  5. Geben Sie den Base SDK Rücken des Projekts neuester SDK

Sie müssen wahrscheinlich ein SDK 3.0 aus früheren XCode-Version installieren. Und es gibt keine Notwendigkeit, das Ziel Base SDK zurück auf die neueste Version zu setzen. Ich habe, wenn es auf 3,0 gesetzt und keine Fehler von ASI HTTP erhalten.

// EDIT: Download-Links für XCode 3.2.1: Snow Leopard und Leopard

Andere Tipps

Versuchen Sie durch den Aufruf respondsToSelector Methode zu überprüfen

if([your_obj respondsToSelector:@selector(sortDescriptorWithKey:ascending:)]){
  // call sortDescriptorWithKey
}
else
{
  // call another method
}

Sie werden Warnungen erhalten beim Kompilieren aber stürzen nicht in der Laufzeit.

Versuchen Sie, die Richtlinien mit etablierten in der Apples Rahmen / Schwach-Verknüpfung Führung . für Funktionen, dass Sie die Objekte wie in @ Andriy Antwort fragen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top