可能重复:
Programmatically detect if app is being run on device or simulator
如何通过代码检测我的应用是在Simulator上运行还是在设备上运行。
答案 0 :(得分:75)
请注意UIDevice
为您提供有关设备本身的信息。
[[UIDevice currentDevice] model]
您还可以使用以下内容:
TARGET_IPHONE_SIMULATOR
告诉您是否在iPhone模拟器中。
TARGET_OS_IPHONE
告诉您,您正在使用iPhone而不是MacOS。
#if TARGET_IPHONE_SIMULATOR
NSLog(@"Running in Simulator - no app store or giro");
#else
NSLog(@"Running on the Device");
#endif
当只对设备感兴趣时
#if !(TARGET_IPHONE_SIMULATOR)
NSLog(@"Running on device");
#endif
答案 1 :(得分:8)
您可以使用此常量
#if TARGET_OS_SIMULATOR
NSLog(@"This is simulator mode....");
#else
NSLog(@"This is device mode....");
#endif
答案 2 :(得分:1)
同样的编译应用程序无法在模拟器和iOS设备上运行,因为CPU指令集完全不同(x86与ARM)。 (...除非你使用lipo构建某种非常奇怪的超级通用二进制文件)
有几种方法可以确定应用程序是否为x86编译。一种是根据许多预定义的编译器预处理器宏之一添加不同的运行时代码。您可以通过在终端命令行上键入以下内容来获取x86编译的预处理器宏列表:
gcc -arch i386 -dM -E - < / dev / null |排序