我应该使用if还是switch语句?Objective-C的

Jos*_*ane 4 iphone if-statement objective-c switch-statement

我一直在想,但找不到明确的答案.我什么时候应该使用'if'或'switch'语句.什么时候比另一个更好?

例如,我可以这样做:

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
    switch (buttonIndex) {
        case 0:
            //Stuff
            break;

        case 1:
            //Stuff
            break;

        default:
            break;
    }

//OR

    if (buttonIndex == 0) {
        //Stuff
    }
    if (buttonIndex == 1) {
        //Stuff 
    }
}
Run Code Online (Sandbox Code Playgroud)

希望你能提供帮助,这只是一个例子,但我确信在不同的情况下,它会有所不同.

Dan*_*ani 13

在这种情况下,这无关紧要.切换存在的原因是它比if更快.如果你编写一个长代码,if ... else if ... else if ...它的执行速度会慢于switch,因为if迭代搜索(O(n))同时switch执行基于表的查找(O(1))


Mic*_*ann 7

我认为这是一个主观问题.答案真的取决于你.

对于我自己的代码,我喜欢使用switch语句,因为很明显发生的事情是某些条件的结果,如果条件不同,可以做其他事情.

但是如果switch case:声明下面的代码相当冗长或复杂,那么对于我自己的代码,我会做第二件事:if (buttonIndex == 0) {比特.

  • 正如@Dani在他的回答中提到的,`switch`需要O(1)时间来执行,而`if ... else if ... else if ...`将是O(n)其中n是条件数.其中一个原因是,使用`if ... else`结构时,必须在每次命中时评估条件,而`switch``case`是表查找. (3认同)