【发布时间】:2010-10-15 18:41:06
【问题描述】:
Objective-C 是评估 if... else if... 块上的每个语句,还是会评估每个语句,然后在找到真实条件时跳过剩余的评估?
这是一个与性能相关的务实问题。
是的,我确实知道 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 只测试每个条件,然后因为中断而退出评估?
我的理解是,在 if... else if... 块上,每个条件都会被评估,因此使用开关或嵌套 if (呃 - 不要喜欢那里的想法)可能会更快地对大量数据进行大型评估操作(数十万个项目正在与可能的一百个语句进行检查)。
只是好奇:-)
【问题讨论】:
-
更好的问题是,“C 是否...?”因为基本流控制继承自 C。Objective-C 是 C 的超集。
标签: objective-c cocoa performance if-statement switch-statement