我无法测试这个,但我想知道是否有人可能知道这一点。进行这个简单的检查
if ([dict objectForKey:@"key"] != nil || [a isEqualToString:b] || someIntValue> 12) { ... }
显然(无论小幅度)第一次检查可能比第二次检查更重,第三次检查更轻。
所以我的问题是;我的应用程序中的二进制文件是否仍会检查其他2个语句,如果第一个语句已经true
?因为如果是这样的话我想在我的代码库中做一个小轮检查来调整上面那些检查,以便在if语句之前移动简单的int
比较。
P.S。
我知道你不能像在PHP中那样检查Objective-C中的未存在对象,我也只是在这个例子中表示现有对象,而不是做 hacky 那些对象第二个陈述不存在:
$a = 0; $b = '';
if ($a == 0 || $i_dont_exist > 0) {
...
}
答案 0 :(得分:2)
这称为short-circuit evaluation。 Objective-C是C的严格超集,因为C支持短路评估,Objective-C也是如此。
因此,如果"或"中的第一个条件声明是正确的,不应评估其余条件。