Starei attento con il risultato di ritorno floatValue:
[[[UIDevice currentDevice] systemVersion] floatValue]
Come con qualsiasi galleggianti, potrebbe non essere esattamente quello che ci si aspetta.Quando si esegue il sopra sul mio sistema, confuso perché la mia istruzione condizionale non è stato in esecuzione, ho notato il valore riscontrato è:
3.20000005
Raccomanda le soluzioni qui invece: How to check iOS version?
Estratto:
NSComparisonResult order = [[UIDevice currentDevice].systemVersion compare: @"3.1.3" options: NSNumericSearch];
if (order == NSOrderedSame || order == NSOrderedDescending) {
// OS version >= 3.1.3
} else {
// OS version < 3.1.3
}
Non lo sapevo. Grazie! – Kriem
Grande, grazie! – Oliver
Una cosa da tenere presente è che la compilazione per il simulatore contro il dispositivo può causare cambiamenti sorprendenti in queste macro. Durante la compilazione per il simulatore SDK 2.2.1 ottengo __IPHONE_OS_VERSION_MIN_REQUIRED = 20000. Durante la compilazione per il dispositivo, tuttavia, ottengo __IPHONE_OS_VERSION_MIN_REQUIRED = 20201, che interrompe la condizione che hai definito sopra. Al momento sto utilizzando "#ifdef __IPHONE_3_0" per isolare il codice che funziona solo in versione 3.0 o successiva. Funziona perché la macro non è definita fino all'SDK 3.0. – n8gray