Objective-C是否评估<code>上的每个语句,如果。。。否则,如果…块,或者它会在每个块到达时对其进行求值,然后在找到真实条件时跳过剩余的求值?
这更像是一个与绩效相关的务实问题,而不是其他任何问题。
是的,我确实知道if块本身的内容没有被执行,但我指的是被评估的实际语句。
实例
if ([condition A] == test) {
// Do something
} else if ([condition B] == test) {
// Do something
} else if ([condition C] == test) {
// Do something
} else {
// Do something because all other tests failed
}
那么…如果条件A是真的,那么条件B和C无论如何都会得到评估吗?
如果他们这样做了,那么使用switch语句的执行方式是否相同,或者switch是否只测试每个条件,然后因为中断而退出评估?
我的理解是,在<code>上,如果。。。否则,if…块,每个条件都会被求值,因此使用开关或嵌套if s(ugh-不喜欢这里的想法)可能会更快地对大量数据进行大型求值操作(数十万项将与可能的一百条语句进行检查)。
只是好奇:-)