iOS中有趣的开关错误

时间:2011-08-30 15:36:58

标签: iphone ios switch-statement

你能试试这两个代码吗?第一个引发错误,而不是第二个错误。我想知道是不是因为我的XCode版本,如果没有,为什么会发生。

        int typeNumber = 4;
        switch (typeNumber) {
            case typeNumberEvent:
                NSString myString;
                break;
            case typeNumberAd:
                NSURL myURL;
                break;
            default:
                NSNumber myNumber;
                break;
        }

        int typeNumber = 4;
        switch (typeNumber) {
            case typeNumberEvent:
                NSLog(@"hello");
                NSString myString;
                break;
            case typeNumberAd:
                NSLog(@"hello");
                NSURL myURL;
                break;
            default:
                NSLog(@"hello");
                NSNumber myNumber;
                break;
        }

2 个答案:

答案 0 :(得分:5)

如果您尝试在case 的第一行创建变量,则编译器会抛出错误。

用括号括起 case 块。一切都会好的。

case typeNumberEvent: {
        NSString myString;
        break;
}

答案 1 :(得分:1)

如果在case块中声明变量,则应该使用花括号声明该块。你的例子将成为:

    int typeNumber = 4;
    switch (typeNumber) {
        case typeNumberEvent:
            {
                NSString myString;
                break;
            }
        case typeNumberAd:
            {
                NSURL myURL;
                break;
            }
        default:
            {
                NSNumber myNumber;
                break;
            }
    }

这个答案很好地总结了它:Can I declare variables inside an Objective-C switch statement?