#if和if子句之间的区别?

猛禽

在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_IPHONETARGET_IPHONE_SIMULATOR是2个用于识别设备类型的宏。

马特

if是您代码中的条件;运行代码时将对其进行检查。

#if是预编译器指令;它决定了是否在编译器甚至没有看到代码之前就将其弹出。(正如您正确地说的那样,Xcode甚至无需编译您的代码就可以做出此决定,因此它可以消除考虑的弹出代码,例如代码完成。)

显然,这部分取决于所要决定的事情。如果这是可以在编译之前做出的决定(即,有关编译/构建过程本身的决定),那么这#if是合理的。如果在代码实际运行之前无法确定,那当然#if是不可能的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章