为什么switch在加载nib之前会期望语句

时间:2011-01-05 06:32:50

标签: iphone

在Switch语句中

示例

switch (indexPath.row)
case 0:
Loading my nib file;
break;
case 1:
Loading another nib file;
break
default:
break
........

在加载我的nib文件之前。它期待任何一个声明。

示例

case 0:
NSLog(@"");
Loading Nib file....

我希望语句NSLog(@“”); .......如果我不需要把NSLog ...或任何其他语句给我错误.....

我想知道为什么会这样。

1 个答案:

答案 0 :(得分:3)

这是Objective-C以一种奇怪的方式从C继承的问题。基本上每个case中的语句必须在一个块中。当case语句之后的语句不是赋值时,编译器会对此进行计算,但如果是,则会感到困惑。

您可以使用NSLog以您的方式解决问题,或者您可以使用花括号简单地围绕您的语句来创建一个块:

case 0: {
    Loading my nib file;
    break; 
}
case 1: {
    Loading another nib file;
    break; 
}

请注意,如果您在x = y之后没有作业(case),则不会出现问题。例如:

case 0:
    if (a = 1) NSLog(@"This works fine");
    break;

在后面的示例中,您在case语句 - TestiPhoneCalViewController *testiPhoneCalViewController之后立即实例化了一个对象 - 这不是一项任务,所以很好。