Rol*_*som 6 if-statement objective-c operators ios
在是否if-statement与&& operator检查第二个参数,如果第一个是false/ NO?
以下是否能够崩溃?
NSDictionary *someRemoteData = [rawJson valueForKey:@"data"];
if( [someRemoteData isKindOfClass:[NSDictionary class]] && someRemoteData.count > 0 ){
//..do something
}
Run Code Online (Sandbox Code Playgroud)
请不要简单的是或否答案,但解释原因.
das*_*ght 20
不,在得知答案后,它不会评估表达式NO.这称为短路,它是使用类似语法评估C,C++,Objective C和其他语言中的布尔表达式的重要部分.条件从左到右评估,使评估方案可预测.
同样的规则适用于||运算符:只要代码知道该值YES,评估就会停止.
短路可以防止在单个复合表达式中进行无效评估,而不是选择if语句.例如,
if (index >= 0 && index < Length && array[index] == 42)
Run Code Online (Sandbox Code Playgroud)
如果不是为了短路,会导致不确定的行为.但由于评估跳过评估array[index]何时index无效,因此上述表达是合法的.
| 归档时间: |
|
| 查看次数: |
11053 次 |
| 最近记录: |