Der einfachste Weg, neu zu definieren, dies zu tun ist die __IPHONE_OS_VERSION_MAX_ALLOWED Präprozessor definieren zu verwenden.
Sie tun dies, indem
Zugabe
__IPHONE_OS_VERSION_MAX_ALLOWED=__IPHONE_4_2
oder etwas ähnliches zu Ihrer „Präprozessormakros“ Option in Build-Einstellungen Ihres Ziels. Sie können die verfügbaren Versionen in <Availability.h> nachschlagen.
Leider, wenn Sie diese Definition hinzufügen, verursacht es Mismatch-Fehler mit Ihrem vorkompilierten Header. Um das zu beheben, müssen Sie die Option "Precompile Prefix Header" auch in Ihren Build-Einstellungen deaktivieren.
Sobald Sie dies tun, erhalten Sie eine Reihe von Fehlern für Klassen, die nicht in Ihrem SDK vorhanden sind (zum Beispiel NSOrderedSet existiert nicht in iOS 4.2). Wenn Sie versuchen, vor iOS 4 zurückzugehen, werden Sie wahrscheinlich so viele Fehler bekommen, dass der Compiler bailt - ich kenne keine Problemumgehung dafür. Ignorieren Sie in jedem Fall die Fehler bezüglich fehlender Klassen in den UIKit-Headern und gehen Sie zum Ende der Fehlerliste. Dort sollten Sie jedes Mal einen Fehler finden, wenn Sie eine Methode oder Klasse verwenden, die nicht im SDK enthalten ist, auf das mit __IPHONE_OS_VERSION_MAX_ALLOWED verwiesen wird. Stellen Sie sicher, dass jede dieser Methoden in einem
if([targetObject respondsToSelector:@selector(thePossiblyMissingSelector:)]
enthalten ist, und Sie sollten sicher sein. Klassen, die auch sein kann fehlen sollte
getestet
if ([NSOrderedSet class] != nil)
Diese Einstellungen sind nicht etwas, was Sie versehentlich vergessen wollen jedoch kippen zurück. Gehen Sie folgendermaßen vor, um das zu einer automatischen Option für das Testen zu machen:
- Erstellen Sie eine neue Buildkonfiguration, die wie "Old SDK Testing" bezeichnet wird.
- Definieren Sie die Option __IPHONE_OS_VERSION_MAX_ALLOWED und die Option für den vorkompilierten Kopf nur für diese Konfiguration (klicken Sie auf den Pfeil neben den einzelnen Zeilen in den Buildeinstellungen, um auf die einzelnen Konfigurationseinstellungen zuzugreifen).
- Duplizieren Sie Ihr aktuelles Scheme und setzen Sie seinen Namen auf "Old SDK Check".
- Legen Sie in diesem neuen Schema den Build Configuration des Run-Elements auf die in Schritt 1 erstellte Buildkonfiguration fest.
- Wählen Sie das neue Schema aus, und erstellen Sie.
Hinweise:
- Ich mache keine Garantie, dass dies jede/alle Ihre Fragen zu fangen.
- Alles außerhalb von UIKit wird von diesem Test nicht erfasst.
- Dies ist kein Ersatz für das Testen Ihres Codes auf den Versionen von iOS Sie planen, zu unterstützen.
Ich denke, er will Kompilierung Warnungen für fehlende Methoden, wenn auf einem niedrigeren iOS als die Basis-SDK. XCode gibt Ihnen nur Warnungen zur Kompilierzeit für die aktuelle Basis-SDK installiert, so glaube ich nicht, dass es möglich ist. Wenn nur ein Gerät getestet werden muss, können Sie mehrere Testfälle für dieses Gerät schreiben und diese ausführen. – vakio
Genau! Also ist es nicht möglich :(. – Quentin
Mögliches Duplikat von [Gibt es eine Möglichkeit für XCode, vor neuen API-Aufrufen zu warnen?] (Http://stackoverflow.com/questions/4676000/is-there-a-way-for- xcode-to-warn-about-new-api-Aufrufe) – JosephH