【问题标题】:Xcode 4.2 switch statement bug?Xcode 4.2 switch 语句错误?
【发布时间】:2011-10-16 06:14:06
【问题描述】:

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

有什么想法吗?

【问题讨论】:

  • 这已经存在很长时间了;你不能用声明开始一个案例块。

标签: xcode xcode4 xcode4.2


【解决方案1】:

这不是 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;
}

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-12
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多