梳理IF语句

Pad*_*215 0 iphone objective-c ios

我有一个两个深的if声明,我想知道我是否可以压缩到单个if stmt:

if ([[myScrollView.subviews objectAtIndex:k] isKindOfClass:[UILabel class]])
{
    if (((UILabel *)[myScrollView.subviews objectAtIndex:k]).tag >= i)
    {
        //code
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定我是否可以进入:

if ([[myScrollView.subviews objectAtIndex:k] isKindOfClass:[UILabel class]] && ((UILabel *)[myScrollView.subviews objectAtIndex:k]).tag >= i)
Run Code Online (Sandbox Code Playgroud)

因为第二个if条件依赖于第一个(如果它不是UILabel并且没有.tag值)可能会发生坏事吗?

mat*_*way 6

您可以将它们组合起来,是的.如果第一个语句失败,那么它将使整个if语句失败并且不执行第二个部分.

为了便于阅读,我可能会这样写:

if ([[myScrollView.subviews objectAtIndex:k] isKindOfClass:[UILabel class]] && 
    ((UILabel *)[myScrollView.subviews objectAtIndex:k]).tag >= i)
{
    // code
}
Run Code Online (Sandbox Code Playgroud)