Обнаруживать в проекте iPhone Xcode, создаю ли я для симулятора или устройства?

Есть ли способ, который я могу условно скомпилировать в своем приложении, основываясь на том, строю ли я для симулятора или устройства? (Мое приложение подключается к внешнему серверу: если я запущен на устройстве, я хочу подключиться к localhost, если я запущен на устройстве, я хочу перейти на мой производственный сервер.)

Я ищу некоторую переменную #ifdef, которую я могу обнаружить, или даже что-то во время выполнения... не имеет значения.

Спасибо.

Ответы

Ответ 1

#if !(TARGET_IPHONE_SIMULATOR)

или, альтернативно,

#if (TARGET_OS_IPHONE)

сообщит вам, что вы работаете на устройстве. Чтобы он работал, вы должны

#include "TargetConditionals.h"

который вы можете найти здесь.

Ответ 2

Я создал макрос, в котором вы можете указать, какие действия вы хотите выполнять в круглых скобках, и эти действия будут выполняться только в том случае, если имитируется устройство.

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

Это используется следующим образом:

SIM(NSLog(@"This will only be logged if the device is simulated"));