Objective-C中的目标条件语句
在开发应用程序时,我希望能够基于目标设置一个变量。换句话说,我想知道我是在模拟器上还是在设备上运行我的应用。在这个示例中,我想设置一个针对本地REST服务进行测试的URL,而不是拥有用于生产REST服务的URL。使用Objective-C中的目标条件很容易做到这一点。我们可以测试我们是否部署到模拟器或iPhone。
预处理器指令
在Objective-C中,你可以定义预处理器指令。他们是什么?基本上,在我们的代码被发送到编译器之前,它被预处理以使人类可读的代码为编译器做好准备。在此步骤中,将定义任何预处理器指令。然后,我们为这些常量变量定义的值将在整个代码中被替换。例如,如果我们定义一个预处理器指令,如:
#定义MAXNUMBERS64intnumberPool(MAXNUMBERS]
然后,在预编译阶段之后,我们的代码看起来如下:
intnumberPool(64]
在本例中,MAXNUMBERS的值存储为64。这个值会在代码中使用常量“MAXNUMBERS”的任何地方被替换。
TargetConditionals.h
在Objective-C中,我们有一个头文件名为TargetConditionals.h它存储了各种条件,我们可以使用这些条件来确定代码的目标操作系统。其中一些条件句包括:
- 目标操作系统MAC
- 目标操作系统WIN32
- 目标是IPHONE
- 目标IPHONE模拟器
使用这些参数,我们可以告诉预处理器是否包含某些要编译的代码部分。我们使用#ifdef - #else - #endif预处理条件。这里是我用来设置URL的代码,如果我运行的代码在我的模拟器或我的物理设备:
#如果TARGET_IPHONE_SIMULATORNSString*urlString=@“http:/ / local.acuity-apps.com/api/index.cfm/api”;#其他的NSString*urlString=@“http:/ / www.acuity-apps.com/api/index.cfm/api”;#endif
希望这对您在开发需要特定于目标操作系统的代码的应用程序时有所帮助。