可能是重复问题:
如何通过代码检测应用程序是在模拟器上运行还是在设备上运行
我该如何通过代码来检测我的应用程序是在模拟器上运行还是在设备上运行。
可能是重复问题:
如何通过代码检测应用程序是在模拟器上运行还是在设备上运行
我该如何通过代码来检测我的应用程序是在模拟器上运行还是在设备上运行。
请记住,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
#if TARGET_OS_SIMULATOR
NSLog(@"This is simulator mode....");
#else
NSLog(@"This is device mode....");
#endif
由于 CPU 指令集完全不同(x86 vs ARM),因此相同编译的应用程序无法同时在模拟器和 iOS 设备上运行。(除非您使用 lipo 构建某种非常奇怪的超级通用二进制文件)
有几种方法可以确定应用程序是否为 x86 编译。其中一种是添加运行时代码,其根据许多预定义的编译器预处理器宏之一而有所不同。您可以通过在终端命令行上输入以下内容来获取 x86 编译的预处理器宏列表:
gcc -arch i386 -dM -E - < /dev/null | sort