iOS中有一个有趣的开关错误。

31 浏览
0 Comments

iOS中有一个有趣的开关错误。

你能试试这两个代码吗?第一个会报错,而第二个不会。我想知道这是因为我的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;
    }

0
0 Comments

在iOS中出现“Funny switch error”问题的原因是无法在case的第一行创建一个变量。这是iOS的一种意图行为。解决方法是将case块用大括号括起来。如果这是“意图行为”,你会认为Xcode会给出更好的错误警告。

原因:无法在case的第一行创建变量。

解决方法:将case块用大括号括起来。

0
0 Comments

在iOS中出现了有趣的开关错误(Funny switch error in iOS),这个问题的出现是由于在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?

0