根据我是在为模拟器还是设备构建,有没有办法在我的应用程序中有条件地编译? (我的应用程序挂钩到外部服务器:如果我在设备上运行,我想连接到localhost;如果我在设备上运行,我想去我的生产服务器。)
我正在寻找一些我能检测到的#ifdef变量,甚至是在运行时的东西......无关紧要。
感谢。
答案 0 :(得分:18)
#if !(TARGET_IPHONE_SIMULATOR)
或者,
#if (TARGET_OS_IPHONE)
会告诉您是否在设备上运行。为了使它起作用,你必须
#include "TargetConditionals.h"
您可以找到here的文件。
答案 1 :(得分: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"));