13

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

我正在寻找一些我可以检测到的#ifdef 变量,甚至在运行时寻找一些东西......没关系。

谢谢。

4

2 回答 2

18
#if !(TARGET_IPHONE_SIMULATOR)

或者,或者,

#if (TARGET_OS_IPHONE)

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

#include "TargetConditionals.h"

您可以在此处找到的文件。

于 2009-12-01T20:02:50.690 回答
1

我创建了一个宏,您可以在其中指定要在括号内执行的操作,并且这些操作仅在设备被模拟时才会执行。

#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"));
于 2012-03-29T18:44:14.807 回答