Frage

HALLO alle

Ich will eine App für das iPhone 2.2 machen. * Und für die Version 3.0. Einige Verfahren in 2.2 * wird in 3.0 veraltet. (Wie UITableViewCell setText und setLabel)

Gibt es eine Möglichkeit, die Firmware-Version zu überprüfen, auf dem iPhone verwendet wird und verschiedene Verfahren einstellen verwenden

War es hilfreich?

Lösung

Sie müssen Pre-Prozessor-Richtlinien für die bedingte Kompilierung verwenden, wie __IPHONE_3_0 und bauen zwei separate ausführbare Dateien.

Zum Beispiel:

 #ifdef __IPHONE_3_0
 // code specific to version 3
 #else
 // code specific to version 2
 #end

Wenn Sie die Version zur Laufzeit ermitteln möchten, können Sie [[UIDevice currentDevice] Systemversion]. Es gibt die Zeichenfolge mit der aktuellen Version des iPhone OS.

Andere Tipps

Wie ich bereits in den Kommentaren erwähnt, überprüfen: Wie ein bestimmtes Ziel iPhone-Version?

Wie in den anderen erwähnten Thread erwähnt, während Sie Pre-Prozessor-Richtlinien verwenden können zwei Anwendungen von einer Code-Basis zu erzeugen, müssen Sie noch zwei Anwendungen (eine für 2.x und eine für 3.x)

Eine Kompilierung Richtlinie kann nicht verwendet werden, um eine Laufzeit Entscheidung zu treffen.

Es gibt noch mehr Detail in dem anderen Thread.

Mögliche Lösung, überprüfen nur respondsToSelector verwenden. Zum Beispiel -

CGSize expectedLabelSize;
    if ([subTitle respondsToSelector:@selector(sizeWithAttributes:)])
    {
        expectedLabelSize = [subTitle sizeWithAttributes:@{NSFontAttributeName:subTitleLabel.font}];
    }else{
        expectedLabelSize = [subTitle sizeWithFont:subTitleLabel.font constrainedToSize:subTitleLabel.frame.size lineBreakMode:NSLineBreakByWordWrapping];
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top