奇怪的"切换案例"声明

det*_*e-c 2 c objective-c switch-statement

我在我的一个文件中有这段代码:

switch ([sender tag]){
    ...

    case 100:
        UIView *v1 = [UIView alloc] initWithFrame blabllabla...
        [v1  bla bla bla...
        break;
    ...
Run Code Online (Sandbox Code Playgroud)

看起来很标准吧?但它给了我这个错误:

"Use of undeclared v1"
Run Code Online (Sandbox Code Playgroud)

然后我放了一个"NSLog()"或"if"语句,如下所示:

case 100:
    NSLog(@"why need a nslog here?");
Run Code Online (Sandbox Code Playgroud)

要么

case 100:
    if(1==1) {
        ...
Run Code Online (Sandbox Code Playgroud)

然后它工作.

谁知道为什么会这样?这是我的代码还是客观规则?

小智 5

case不使用C块的情况下,不能声明范围限制为a的变量.将其更改为:

case 100:
{
    UIView *v1 = [UIView alloc] initWithFrame blabllabla...
    [v1  bla bla bla...
    break;
}
Run Code Online (Sandbox Code Playgroud)

它应该工作.