2012-03-15 16 views
17

Duplicar posibles:
Programmatically detect if app is being run on device or simulatorCómo detectar aplicación se está ejecutando en el simulador o dispositivo

¿Cómo puedo detectar si mi aplicación se está ejecutando en simulador o en el dispositivo a través de código.

+2

visto esto ?? http://stackoverflow.com/questions/5775420/programmatically-detect-if-app-is-being-run-on-device-or-simulator – Vin

+1

duplicado de tantos mensajes: http://stackoverflow.com/questions/ 5122149/iphone-simulador-cómo-a-detectar-cuando-app-is-correr-en-simulador-tan-can-configuración, http://stackoverflow.com/questions/5775420/programmatically-detect-if-app- is-being-run-on-device-or-simulator, http://stackoverflow.com/questions/458304/how-can-i-programmatically-determine-if-my-app-is-running-in-the- iphone-simulato – Sarah

+1

@Fulvio lo siento si sonaba áspero. Esta pregunta se ha hecho mucho en SO. ¿No se supone que debemos buscar una publicación ya existente, relacionada con nuestra pregunta, antes de publicarla? – Vin

Respuesta

66

Tenga en cuenta te ofrece ya información sobre el propio dispositivo.

[[UIDevice currentDevice] model]

También puede utilizar el siguiente:

TARGET_IPHONE_SIMULATOR te dice si estás en el simulador de iPhone.

TARGET_OS_IPHONE te dice que está trabajando en el iPhone en lugar de MacOS.

#if TARGET_IPHONE_SIMULATOR 

    NSLog(@"Running in Simulator - no app store or giro"); 

#else 

    NSLog(@"Running on the Device"); 

#endif 

y cuando sólo está interesado en el dispositivo

#if !(TARGET_IPHONE_SIMULATOR) 

    NSLog(@"Running on device"); 

#endif 
8

Puede utilizar esta constante

#if TARGET_OS_SIMULATOR 
    NSLog(@"This is simulator mode...."); 
#else 
    NSLog(@"This is device mode...."); 
#endif 
1

La misma aplicación compilada no puede corrida en tanto el simulador como un dispositivo iOS, ya que los conjuntos de instrucciones de la CPU son completamente diferentes (x86 frente a ARM). (... a menos que usted está construyendo una especie de extraña binario utilizando lipo súper universales)

Hay varias maneras de determinar si la aplicación fue compilado para x86 o no. Una de ellas es agregar el código de tiempo de ejecución difiere dependiendo de una de las muchas macros predefinidas del preprocesador del compilador. Puede obtener una lista de macros de preprocesador para una compilación x86 escribiendo esto en la línea de comando del terminal:

gcc -arch i386 -dM -E - </dev/null | ordenar

Cuestiones relacionadas