以编程方式检测应用程序是否正在设备或模拟器上运行

我想知道我的应用程序是否在运行时在设备或模拟器上运行。 有没有办法检测到这个?

原因是模拟器testing蓝牙API: http : //volcore.limbicsoft.com/2009/09/iphone-os-31-gamekit-pt-1-woooohooo.html

#if TARGET_OS_SIMULATOR //Simulator #else // Device #endif 

请参考这个以前的SO问题也是什么#defines编译为iPhone时由Xcode设置

我创build了一个macros,您可以在其中指定要在括号内执行哪些操作,并且只有在模拟设备时才会执行这些操作。

 #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 

请注意,您不应该在TARGET_IPHONE_SIMULATOR上定义,因为它总是被定义为10

您可以使用TARGET_IPHONE_SIMULATOR预处理macros来区分设备和模拟器目标。