Xcode 4.2切换语句错误?

时间:2011-10-16 06:14:07

标签: xcode xcode4 xcode4.2

enter image description here

BUT!在之前添加随机语句:

enter image description here

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这不是switch语句错误,它是C语言的限制。在C中,case标签之后的第一个语句不能是变量声明。你可以通过在switch语句之前声明变量或在代码块中创建变量来解决这个问题(见下文)。显然,您也可以重新排序代码(如果可能的话),以便在变量声明之前出现另一个语句。

示例1:

CGRect newRect = CGRectZero;
switch( var ) {
  case 0:
    // do some stuff
    break;
  case 1:
  default:
    newRect = [someVar someMethodThatReturnsARect];
    // other code
    break;
}

示例2:

switch( var ) {
  case 0:
    // do some stuff
    break;
  case 1:
  default: {
    CGRect newRect = [someVar someMethodThatReturnsARect];
    // other code
    break;
  }
}

示例3:

switch( var ) {
  case 0:
    // do some stuff
    break;
  case 1:
  default:
    // some code re-ordered to here
    CGRect newRect = [someVar someMethodThatReturnsARect];
    // rest of the other code
    break;
}

答案 1 :(得分:0)

刚刚检查了Kernighan& Ritchie。在C规范中没有描述的行 不允许在“案件”的第一个陈述中作出声明。

然而,大多数人认为不在“案例”中声明值是一个很好的编程。

我认为b)问题来自 EXC_BAD_ACCESS in statement block in Switch impact on imageViewPoistion 与同一个bug有关。