En mi aplicación, estoy descargando algunas imágenes de la web (desde mi servidor para ser precisas), para ahorrar algo de ancho de banda y especialmente memoria en el teléfono, las doy en dos resoluciones: 480x320 para la "vieja" serie de iPhone y 960x640 para el iPhone 4 con la pantalla Retina. Ahora necesito poder detectar desde dentro de la aplicación cuando se ejecuta en un dispositivo que admite la pantalla retina. ¿Cómo podría hacer eso?Detectar pantalla retina/iPhone 4 en iPhone SDK
He estado pensando en utilizar el fragmento de código a continuación, que me devolvería un identificador de dispositivo específico como, por ejemplo. "iPhone3", sin embargo, estaría limitando la detección al iPhone4 y tendría que actualizar ese código para cualquier dispositivo posterior con una pantalla Retina.
size_t size;
// Set 'oldp' parameter to NULL to get the size of the data
// returned so we can allocate appropriate amount of space
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
// Allocate the space to store name
char *name = malloc(size);
// Get the platform name
sysctlbyname("hw.machine", name, &size, NULL, 0);
// Place name into a string
NSString *machine = [NSString stringWithCString:name];
¿Hay alguna mejor idea (tal vez es muy obvio, pero me lo perdí)?
Esta es la forma correcta de hacerlo. – Elfred
Sí, use esto, no intente nunca consultar en qué dispositivo se está ejecutando, terminará en nada más que dolor. –
Ese es el enfoque correcto, ya que no desea escribir código condicional para el iPhone 4, pero para una pantalla con una escala/resolución diferente. Quién sabe cuándo el iPod recibirá el tratamiento de la retina. – FelixLam