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

Gre*_*tic 13 iphone xcode target

有没有什么方法可以根据我是在为模拟器还是设备构建而在我的应用程序中有条件地编译?(我的应用程序挂钩到外部服务器:如果我在设备上运行,我想连接到localhost;如果我在设备上运行,我想去我的生产服务器.)

我正在寻找一些我可以检测到的#ifdef变量,甚至是运行时的东西...无所谓.

谢谢.

luv*_*ere 18

#if !(TARGET_IPHONE_SIMULATOR)
Run Code Online (Sandbox Code Playgroud)

或者,或者,

#if (TARGET_OS_IPHONE)
Run Code Online (Sandbox Code Playgroud)

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

#include "TargetConditionals.h"

你可以在这里找到的文件.

  • 我从来没有包含该文件,TARGET_IPHONE_SIMULATOR似乎总是有效 - 它可能已经包含在基金会中. (4认同)
  • 更正...你的第二个例子(TARGET_OS_IPHONE)总是成功,当然,前提是你正在进行iPhone开发.你的第一个例子是TARGET_IPHONE_SIMULATOR,我正在寻找,只有你在模拟器上运行(相对于设备)才能成功. (2认同)
  • Xcode 4.1.3已经包含了TargetConditionals.h. (2认同)