在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 ...或任何其他语句给我错误.....
我想知道为什么会这样。
答案 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
之后立即实例化了一个对象 - 这不是一项任务,所以很好。