Rileva in progetto Xcode iPhone se sto costruendo per simulatore o un dispositivo?

StackOverflow https://stackoverflow.com/questions/1828482

  •  11-09-2019
  •  | 
  •  

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.

È stato utile?

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"));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top