在Objective-C(我工作的iOS SDK),我可以使用以下2种方式分支条件:#if和if子句之间的区别?
方法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
}
2种方法有什么区别?我注意到Xcode在方法1中没有检测到分支内的编码错误。
注:TARGET_OS_IPHONE
& TARGET_IPHONE_SIMULATOR
是2个用于标识设备类型的宏。
我明白了。在这种情况下,我们应该使用预编译器指令而不是条件子句?我发现自己更适合使用条件子句,因为它会发现错误。 – Raptor
预编译器指令适用于确保某些代码行在某些情况下不会显示。例如,有些人使用'#if DEBUG'来包装'NSLog'调用,这样就没有登录最终版本的危险。 – matt
另外我用它来试验或者演示完成独立的做同样事情的方法,如下所示:https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch02p070filters/ch15p419filters /ViewController.m – matt