Bedingt inklusive Kopfzeilen, abhängig von der iOS-Version

8

Ich versuche, eine Bibliothek mit iOS5- und iOS4.3-Varianten zu verwenden. Das Problem, das ich habe, ist, die richtige Version bedingt zu bekommen, d. H .:

für iOS5:

%Vor%

Für iOS4

%Vor%

Ich kann sehen, wie man Sachen innerhalb des Implementierungsblocks der Klasse bedingt einbezieht, aber nicht außerhalb davon. Kann jemand den besten Weg vorschlagen, dies zu tun?

    
TimD 11.10.2011, 12:19
quelle

3 Antworten

17

Sie sollten das tun können (ungetestet):

%Vor%     
DarkDust 11.10.2011, 12:56
quelle
1

Wenn Sie sich die Foundation Header (NSString, NSData ...) ansehen, gibt es viele

%Vor%

Es gibt auch eine Definition für

%Vor%     
jbat100 11.10.2011 12:34
quelle
0

Sie können diese Methode oder die, die DarkDust sagt und überprüfen IOS SDK-Version, wenn Sie kompilieren, aber in der Regel ist das Schönste, wenn Sie einige dieser Dinge zur Laufzeit behandeln, da Benutzer ihr Gerät aktualisieren und dann magisch neue Funktionen übernehmen oder eine bessere Betriebssystemintegration erhalten können.

Es gibt mehrere Möglichkeiten, dies zu tun. In neueren SDKS sollten Sie NS_CLASS_AVAILABLE haben. Wenn Sie jedoch noch ältere SDKs unterstützen, ist dies unter Umständen nicht möglich. Aber das ist Ziel-c, also ist das Glück auf unserer Seite:

%Vor%

Grundsätzlich fragt die Art, wie dies funktioniert, das Typsystem ab, ob eine Klasse verfügbar ist. Ist dies nicht der Fall, wird null zurückgegeben. Dies ist etwas gefährlich, wenn es nicht getestet wird, weil es eine Zeichenfolge ist und kompiliert wird, aber Sie sollten damit umgehen können.

Wenn es eine Klasse gibt, die an beiden Stellen existiert, können Sie die Selektorverfügbarkeit zur Laufzeit wie folgt testen:

%Vor%

reference1 reference2

Wenn Sie dies tun, können Sie einen Build bereitstellen, der OS4.2-Benutzer weiterhin mit einem benutzerdefinierten Tweet-Blatt unterstützt, aber wenn sie ein Upgrade durchführen, erhalten sie automatisch die OS-Twitter-Integration. Aber es ist immer noch alles in einem einzigen Build, den Sie freigeben können, wenn Sie möchten, ohne auf 90% des Marktes warten zu müssen, bevor Sie beginnen, ältere OS-Benutzer zu entfremden.

    
slf 11.10.2011 13:15
quelle

Tags und Links