考虑下面的switch语句:
switch (buttonIndex) {
case 0:
[self fooWithCompletion:^{
[weakSelf finishEditing];
}];
break;
case 1: // Error here
[self barWithCompletion:^{
[weakSelf finishEditing];
}];
break;
default:
break;
}
它会导致编译器错误
Cannot jump from switch statement to this case label
在case 1:
行上。
为什么会发生这种情况?我如何修复它?
发布于 2015-11-06 01:04:48
块定义创建了一个新的作用域,这似乎会干扰编译器正确解释switch语句的能力。
为每个案例标签添加范围分隔符可以解决此错误。我认为这是因为块的作用域现在明确地是case作用域的子级。
switch (buttonIndex) {
case 0:
{
[self updateUserDataWithCompletion:^{
[weakSelf finishEditing];
}];
break;
}
case 1:
{
[self updateOtherDataWithCompletion:^{
[weakSelf finishEditing];
}];
break;
}
default:
break;
}
对于类似的问题,有一个bug open with LLVM。
https://stackoverflow.com/questions/33550588
复制相似问题