2012-03-15 8 views
17

Eventuali duplicati:
Programmatically detect if app is being run on device or simulatorCome rilevare applicazione è in esecuzione sul simulatore o un dispositivo

Come posso rilevare se la mia applicazione è in esecuzione su simulatore o su dispositivo tramite codice.

+2

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

+1

duplicato di così tanti post: http://stackoverflow.com/questions/ 5122149/iphone-simulator-how-to-detect-when-app-is-running-on-simulator-so-can-setup, 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 scusate se suonava duro. Questa domanda è stata posta molto su SO.Anon dobbiamo cercare un post già esistente, relativo alla nostra domanda, prima di postare? – Vin

risposta

66

Ricordare che fornisce già informazioni sul dispositivo stesso.

[[UIDevice currentDevice] model]

È inoltre possibile utilizzare il seguente:

TARGET_IPHONE_SIMULATOR ti dice se sei nel simulatore iPhone.

TARGET_OS_IPHONE ti dice che stai lavorando su iPhone invece che su MacOS.

#if TARGET_IPHONE_SIMULATOR 

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

#else 

    NSLog(@"Running on the Device"); 

#endif 

e quando soltanto interessati al dispositivo

#if !(TARGET_IPHONE_SIMULATOR) 

    NSLog(@"Running on device"); 

#endif 
8

È possibile utilizzare questa costante

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

La stessa applicazione compilato non può corsa sia sul simulatore e un dispositivo iOS, poiché i set di istruzioni della CPU sono completamente diversi (x86 rispetto a ARM). (... a meno che non si stia creando una sorta di binario super-universale molto strano usando lipo)

Ci sono diversi modi per determinare se l'app è stata compilata per x86 o meno. Uno consiste nell'aggiungere il codice temporale di esecuzione differisce a seconda di una delle molte macro predefinite del preprocessore del compilatore. È possibile ottenere un elenco di macro del preprocessore per una compilazione x86 digitandolo nella riga di comando Terminale:

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

Problemi correlati