Regel 1: Verlassen Sie sich nicht auf die Version oder den Gerätetyp, um festzustellen, ob eine Funktion verfügbar ist. Verschiedene Geräte (iPhone, iPod Touch und iPad) können die gleiche Funktion aber in verschiedenen Versionen des Betriebssystems erhalten. Link schwach gegen Frameworks und fehlende Klassen wird nil
sein. Oder verwenden Sie NSClassFromString()
Funktion, die auch nil
zurückgibt, wenn eine Klasse nicht vorhanden ist. Verwenden Sie auch -[NSObject respondsToSelector:]
, um abzufragen, ob eine Methode existiert oder nicht.
Regel 2: Apple-schreckt die definierten Konstanten verwenden (wie __IPHONE_2_2
), wenn für die Versionen Überprüfung, anstatt ihre numerische Werte als solche verwendet werden:
#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= 40200)
NSLog(@"BUILT against iPhone 4.2 or later");
#endif
Aber nehmen Sie Mitteilung #if
Compile-Zeit mit Direktive wird nur prüfen, welche Version des SDK Sie Build gegen nicht welche Version des OS wird später auf laufen.
Sowohl 4.1 als auch 4.2 sind ≥ 2.2. – kennytm
# Wenn/# endif sind * Kompilierzeit * Direktiven. Sie vergleichen nur mit Ihren Build-Einstellungen, um zu sehen, auf welche Betriebssystemversion Sie abzielen. Aber der gleiche Code wird unabhängig davon, auf welchem Betriebssystem Sie laufen, ausgegeben. Sie möchten eine * Laufzeitprüfung * durchführen. – benzado
Versuchen Sie dieses: http://jayprakashdubey.blogspot.in/2014/07/check-device-os-version.html –