代码之家  ›  专栏  ›  技术社区  ›  Greg Maletic

在Xcode iPhone项目中检测我是为模拟器还是设备构建?

  •  13
  • Greg Maletic  · 技术社区  · 15 年前

    有没有什么方法可以有条件地在我的应用程序中编译基于我是为模拟器还是设备构建的?(我的应用程序挂接到外部服务器:如果我在设备上运行,我想连接到本地主机;如果我在设备上运行,我想转到生产服务器。)

    我正在寻找一些我可以检测到的ifdef变量,甚至是运行时的一些变量……都无关紧要。

    谢谢。

    2 回复  |  直到 13 年前
        1
  •  18
  •   luvieere    15 年前
    #if !(TARGET_IPHONE_SIMULATOR)
    

    或者,或者,

    #if (TARGET_OS_IPHONE)
    

    会告诉你是否在设备上运行。为了让它工作,你必须

    #include "TargetConditionals.h"

    可以找到的文件 here .

        2
  •  1
  •   Fernando Cervantes Matthias Bauch    13 年前

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

    #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"));