以编程方式检测应用程序是否正在设备或模拟器上运行
我想知道我的应用程序是否在运行时在设备或模拟器上运行。 有没有办法检测到这个?
原因是模拟器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
上定义,因为它总是被定义为1
或0
。
您可以使用TARGET_IPHONE_SIMULATOR预处理macros来区分设备和模拟器目标。