El uso de iPhone OS 3.0 llamadas de funciones en lugar de la función obsoleta 2.2 2.2 pide a los dispositivos
-
19-09-2019 - |
Pregunta
Si fijo Base + SDK activa de una aplicación de iPhone a 3.0 y el destino de despliegue a 2,2, puedo usar las nuevas versiones de las funciones de los dispositivos 2.2?
Por ejemplo, UITableViewCell
requiere ahora una imagen para ajustar utilizando [cell.imageView setImage:image]
, mientras que en 2.2, que se dice [cell setImage:image]
. ¿El uso de la nueva caída de 2.2 [cell.imageView setImage:image]
dispositivos?
Solución
Nop no se puede nos OS 3.0 Pide a 2,2. método en desuso debe ser comportarse de forma normal por lo menos en OS 3. Deprecation en muchos casos en el sistema operativo, sólo significa que Apple recomienda el uso de nuevos métodos en lugar de en desuso queridos; pero esos métodos pueden desaparecer en el futuro también.
Usted tiene algunas opciones:
- Simplemente haciendo caso omiso de las advertencias, siempre y cuando la aplicación y métodos realmente funcionan en OS 3.0.
-
Tener un control de tiempo de ejecución para determinar la versión del sistema operativo, e invocar el método apropiado:
double version = [[[UIDevice currentDevice] systemVersion] doubleValue]; if (version >= 3.0) { [cell.imageView setImage:image]; } else { [cell setImage:image]; }
o mejor aún:
if ([cell respondsToSelector:@selector(imageView)]) { [cell.imageView setImage:image]; } else { [cell setImage:image]; }
Tenga en cuenta que una comprobación en tiempo de compilación, el uso de directivas
ifdef
no funcionará -
caída de apoyo OS 2.2. Es bastante razonable para que sólo se permite orientar 3.0, así como la captación de 3.X es bastante alto. En el caso de mi pequeña aplicación, en diciembre tuve 27 usuarios en sistemas pre-3.0 de 2.058 usuarios. Ni que decir tiene, esta opción reduce significativamente su prueba es necesario.
Otros consejos
No, no se puede utilizar OS 3.0 llamadas en un dispositivo de 2.x. Me sorprendería si se puede instalar una aplicación de 3.0 apuntado en un dispositivo 2.x.