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

È stato utile?

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];
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top