Ответ 1
#if TARGET_OS_SIMULATOR
//Simulator
#else
// Device
#endif
Pls ссылается на этот предыдущий вопрос SO также Какие #defines настраиваются Xcode при компиляции для iPhone
Я хотел бы узнать, работает ли мое приложение на устройстве или симуляторе во время выполнения. Есть ли способ обнаружить это?
Причина в проверке bluetooth api с симулятором: http://volcore.limbicsoft.com/2009/09/iphone-os-31-gamekit-pt-1-woooohooo.html
#if TARGET_OS_SIMULATOR
//Simulator
#else
// Device
#endif
Pls ссылается на этот предыдущий вопрос SO также Какие #defines настраиваются Xcode при компиляции для iPhone
Я создал макрос, в котором вы можете указать, какие действия вы хотите выполнять в круглых скобках, и эти действия будут выполняться только в том случае, если имитируется устройство.
#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"));
TARGET_IPHONE_SIMULATOR определяется на устройстве (но определяется как false). и определяется как ниже
#if TARGET_IPHONE_SIMULATOR
NSString * const DeviceMode = @"Simulator";
#else
NSString * const DeviceMode = @"Device";
#endif
Просто используйте DeviceMode
, чтобы знать между устройством и симулятором
Убедитесь, что симулятор
#if TARGET_IPHONE_SIMULATOR
// Simulator
#endif
Убедитесь, что устройство
#if !(TARGET_IPHONE_SIMULATOR)
// Device
#endif
Проверьте как
#if TARGET_IPHONE_SIMULATOR
// Simulator
#else
// Device
#endif
Обратите внимание, что вы не должны ifdef
on
TARGET_IPHONE_SIMULATOR
, потому что он всегда будет определяться либо 1
, либо 0
.
Вы можете использовать макрос препроцессора TARGET_IPHONE_SIMULATOR, чтобы различать цели устройства и имитатора.