1

在此处输入图像描述

但!在之前添加一个随机语句:

在此处输入图像描述

有什么想法吗?

4

2 回答 2

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;
}
于 2011-10-16T06:21:03.393 回答
0

刚刚检查了 Kernighan&Ritchie。在 C 规范中,没有一行描述不允许在“case”的第一条语句中声明。

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

我认为 Switch 对 imageViewPoistion 的影响中语句块中 EXC_BAD_ACCESS的 b) 问题 与同一个错误有关。

于 2012-09-28T11:16:33.110 回答