切换目标-c必须中断的地方

0 case objective-c break switch-statement

这个解决方案有什么区别:

switch (value)
{
    case 1:
    {
        // some code
    } break;
}
Run Code Online (Sandbox Code Playgroud)

break住宿括号而这之后:

switch (value)
{
    case 1:
    {
        // some code
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

break留在括号

Sul*_*han 6

A break使switch语句结束其执行.如果你没有添加一个break,你case的下一个case将开始执行.考虑:

NSInteger myInt = 0;
switch (myInt) {
case 0:
   NSLog("0");
case 1:
   NSLog("1");
default:
   NSLog("Default");
}
Run Code Online (Sandbox Code Playgroud)

将打印:

0
1
Default
Run Code Online (Sandbox Code Playgroud)

因为没有休息.

如果你换break入一个块并不重要,{ break; }因为块会改变在其中声明的变量的范围,但对它break自身没有影响.

两者之间没有区别{ ... } break;,{ ... break; }因为在两个版本break中都是执行的最后一个语句,这一切都很重要.

然而,

case 0:
   if (myCondition) {
      break;
   }
case 1:
   ...
Run Code Online (Sandbox Code Playgroud)

会有一个非常不同的含义.如果myConditionNO,那么下一个case(case 1:)也会执行(fall-through),因为该break语句尚未执行.