Pregunta

Hola a todos

Quiero hacer una aplicación para iPhone 2.2. * y para la versión 3.0. Algún método en 2.2 * está en desuso en 3.0. (como UITableViewCell setText y setLabel)

¿Hay alguna forma de verificar qué versión de firmware se utiliza en el iPhone y configurar un método diferente para usar?

¿Fue útil?

Solución

Deberá usar directivas de preprocesador para la compilación condicional como __IPHONE_3_0 y construir dos ejecutables separados.

Por ejemplo:

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

Si necesita detectar la versión en tiempo de ejecución, puede usar [[UIDevice currentDevice] systemVersion]. Devuelve la cadena con la versión actual del iPhone OS.

Otros consejos

Como mencioné en los comentarios anteriores, verifique: Cómo apuntar a un específico ¿Versión de iPhone?

Como se mencionó en el otro subproceso al que se hace referencia, aunque puede usar directivas de preprocesador para generar dos aplicaciones desde una base de código, aún necesitará dos aplicaciones (una para 2.xy otra para 3.x) >

Una directiva de tiempo de compilación no se puede usar para tomar una decisión de tiempo de ejecución.

Hay más detalles en el otro hilo.

Solución alternativa, solo verifique usando respondsToSelector. Por ejemplo:

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];
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top