在Objective-C(我正在使用iOS SDK)中,我可以使用以下2种方法来分支条件:
方法1
#if TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
// Branch A
# elif TARGET_OS_IPHONE && TARGET_IPHONE_SIMULATOR
// Branch B
# endif
方法2
if(TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR) {
// Branch A
} else {
// Branch B
}
两种方法有什么区别?我注意到Xcode在方法1的分支中未检测到编码错误。
注意:TARGET_OS_IPHONE
&TARGET_IPHONE_SIMULATOR
是2个用于识别设备类型的宏。
if
是您代码中的条件;运行代码时将对其进行检查。
#if
是预编译器指令;它决定了是否在编译器甚至没有看到代码之前就将其弹出。(正如您正确地说的那样,Xcode甚至无需编译您的代码就可以做出此决定,因此它可以消除考虑的弹出代码,例如代码完成。)
显然,这部分取决于所要决定的事情。如果这是可以在编译之前做出的决定(即,有关编译/构建过程本身的决定),那么这#if
是合理的。如果在代码实际运行之前无法确定,那当然#if
是不可能的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句