如何检测应用程序是否在模拟器或设备上运行

时间:2012-03-15 10:39:17

标签: iphone objective-c ios ipad

  

可能重复:
  Programmatically detect if app is being run on device or simulator

如何通过代码检测我的应用是在Simulator上运行还是在设备上运行。

3 个答案:

答案 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 |排序