Rileva in progetto Xcode iPhone se sto costruendo per simulatore o un dispositivo?
Domanda
C'è un modo posso condizionalmente compilare nella mia app in base al fatto che sto costruendo per il simulatore o il dispositivo? (Le mie app ganci a un server esterno: se sto in esecuzione sul dispositivo, voglio per connettersi a localhost, se sto in esecuzione sul dispositivo, voglio andare al mio server di produzione.)
Sto cercando qualche variabile #ifdef posso rilevare, o anche qualcosa a runtime ... non importa.
Grazie.
Soluzione
#if !(TARGET_IPHONE_SIMULATOR)
o, in alternativa,
#if (TARGET_OS_IPHONE)
vi dirà se si sta eseguendo sul dispositivo. Al fine di farlo funzionare, è necessario
#include "TargetConditionals.h"
file che si possono trovare qui .
Altri suggerimenti
ho creato una macro in cui è possibile specificare quali azioni si desidera eseguire all'interno di parentesi e queste azioni verrà eseguita solo se il dispositivo viene simulato.
#define SIM(x) if ([[[UIDevice currentDevice].model lowercaseString] rangeOfString:@"simulator"].location != NSNotFound){x;}
Questo è usato in questo modo:
SIM(NSLog(@"This will only be logged if the device is simulated"));