请考虑以下switch语句:
switch (buttonIndex) {
case 0:
[self fooWithCompletion:^{
[weakSelf finishEditing];
}];
break;
case 1: // Error here
[self barWithCompletion:^{
[weakSelf finishEditing];
}];
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
它会导致编译器错误
Cannot jump from switch statement to this case label
就行了case 1:.
为什么会发生这种情况,我该如何解决?
aed*_*ols 69
块定义创建了一个新的作用域,它似乎会干扰编译器正确解释switch语句的能力.
为每个案例标签添加范围分隔符可解决错误.我认为这是因为块的范围现在毫无疑问是案例范围的子项.
switch (buttonIndex) {
case 0:
{
[self updateUserDataWithCompletion:^{
[weakSelf finishEditing];
}];
break;
}
case 1:
{
[self updateOtherDataWithCompletion:^{
[weakSelf finishEditing];
}];
break;
}
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7895 次 |
| 最近记录: |