iPhone verifica la versione del firmware
-
21-08-2019 - |
Domanda
Ciao a tutti
Voglio creare un'app per iPhone 2.2. * e per la versione 3.0. Alcuni metodi in 2.2 * sono obsoleti in 3.0. (come UITableViewCell setText e setLabel)
Esiste un modo per verificare quale versione del firmware viene utilizzata su iPhone e per impostare metodi diversi da utilizzare
Soluzione
Dovrai utilizzare le direttive pre-processore per la compilazione condizionale come __IPHONE_3_0 e creare due eseguibili separati.
Ad esempio:
#ifdef __IPHONE_3_0 // code specific to version 3 #else // code specific to version 2 #end
Se è necessario rilevare la versione in fase di esecuzione, è possibile utilizzare [[UIDevice currentDevice] systemVersion]. Restituisce la stringa con la versione corrente del sistema operativo iPhone.
Altri suggerimenti
Come ho già detto nei commenti prima, controlla: Come scegliere come target uno specifico Versione per iPhone?
Come menzionato nell'altro thread di riferimento, mentre è possibile utilizzare le direttive pre-processore per generare due applicazioni da una base di codice, saranno comunque necessarie due applicazioni (una per 2.xe una per 3.x)
Una direttiva di compilazione non può essere utilizzata per prendere una decisione di runtime.
Ci sono più dettagli nell'altra discussione.
Soluzione alternativa, basta controllare con respondsToSelector. Ad esempio-
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];
}