Detectar no projeto de iPhone Xcode se eu estou construindo para o simulador ou dispositivo?

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

  •  11-09-2019
  •  | 
  •  

Pergunta

Existe alguma maneira eu posso condicionalmente compilar em meu aplicativo com base em se eu estou construindo para o simulador ou o dispositivo? (My App ganchos para um servidor externo: se eu estou correndo no dispositivo, eu quero conectar a localhost; se eu estou correndo no dispositivo, eu quero ir para o meu servidor de produção.)

Eu estou procurando alguma variável #ifdef posso detectar, ou mesmo algo em tempo de execução ... não importa.

Graças.

Foi útil?

Solução

#if !(TARGET_IPHONE_SIMULATOR)

ou, alternativamente,

#if (TARGET_OS_IPHONE)

vai dizer se você está em execução no dispositivo. Em ordem para que ele funcione, você deve

#include "TargetConditionals.h"

arquivo

que você pode encontrar aqui .

Outras dicas

Eu criei uma macro em que você pode especificar quais ações você deseja executar dentro de parênteses e essas ações só será executada se o dispositivo está sendo simulado.

#define SIM(x) if ([[[UIDevice currentDevice].model lowercaseString] rangeOfString:@"simulator"].location != NSNotFound){x;}

Isto é usado como este:

SIM(NSLog(@"This will only be logged if the device is simulated"));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top