Detectar en el proyecto de Xcode iPhone si estoy construyendo para el simulador o dispositivo?
Pregunta
¿Hay alguna manera de que pueda compilar condicionalmente en mi aplicación en base a si estoy construyendo para el simulador o dispositivo? (Mi aplicación ganchos a un servidor externo: si estoy ejecutando en el dispositivo, que quieren conectarse a localhost; si estoy ejecutando en el dispositivo, quiero ir a mi servidor de producción.)
Busco alguna variable #ifdef puedo detectar, o incluso algo en tiempo de ejecución ... no importa.
Gracias.
Solución
#if !(TARGET_IPHONE_SIMULATOR)
o, alternativamente,
#if (TARGET_OS_IPHONE)
le dirá si se está ejecutando en el dispositivo. Para que funcione, debe
#include "TargetConditionals.h"
archivo que se puede encontrar aquí .
Otros consejos
He creado una macro en el que se puede especificar qué acciones desea realizar dentro de paréntesis, y estas acciones sólo se realizará si el dispositivo se está simulando.
#define SIM(x) if ([[[UIDevice currentDevice].model lowercaseString] rangeOfString:@"simulator"].location != NSNotFound){x;}
Esto se utiliza como esto:
SIM(NSLog(@"This will only be logged if the device is simulated"));