Detectar no projeto de iPhone Xcode se eu estou construindo para o simulador ou dispositivo?
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.
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"
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"));