3

Could you try those two codes ? The first one raises an error, not the second one. I'd like to know if it's because of my XCode version, and if not, why is it happening.

        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;
        }
Nielsou Hacken-Bergen
  • 2,606
  • 6
  • 27
  • 37
  • I hope you're writing more code than this. The scope of those variables is pretty limited. – Hyperbole Aug 30 '11 at 15:46
  • possible duplicate of [Can I declare variables inside an Objective-C switch statement?](http://stackoverflow.com/questions/1115304/can-i-declare-variables-inside-an-objective-c-switch-statement) – Brad Larson Aug 31 '11 at 17:24

2 Answers2

5

The compiler throws error if you try to create a variable at the first line of case.

Just enclose the case block with braces. Everything will be alright.

case typeNumberEvent: {
        NSString myString;
        break;
}
EmptyStack
  • 51,274
  • 23
  • 147
  • 178
1

If you declare variables inside a case block, you should declare that block with curly braces. Your example would become:

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

This answer sums it up nicely, too: Can I declare variables inside an Objective-C switch statement?

Community
  • 1
  • 1
picciano
  • 22,341
  • 9
  • 69
  • 82