Определите в проекте Xcode iPhone, собираюсь ли я создавать симулятор или устройство? - PullRequest
13 голосов
/ 01 декабря 2009

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

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

Спасибо.

Ответы [ 2 ]

18 голосов
/ 01 декабря 2009
#if !(TARGET_IPHONE_SIMULATOR)

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

#if (TARGET_OS_IPHONE)

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

#include "TargetConditionals.h"

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

1 голос
/ 29 марта 2012

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

#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"));
...