为什么UIAlertView的区别?

Pet*_*erK 3 c objective-c uialertview ios

我有以下代码,它有效:

// Load new game screen
-(IBAction)newGame_button:(id)sender {
    myAlert = [[UIAlertView alloc]
                    initWithTitle:@"Varning" 
                    message:@"Om du går vidare kommer pågående spel stoppas och nollställas!"
                    delegate:self
                    cancelButtonTitle:@"Tillbaka"
                    otherButtonTitles:@"Fortsätt", nil];
    myAlert.tag=kTagNewGame;
    [myAlert show];
    [myAlert release];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    switch(myAlert.tag ) {
        case kTagContinueGame:
            NSLog(@"kTagContinueGame");
            NSMutableArray *continueGameArray = [[NSMutableArray alloc] initWithCapacity:0];

            AccessCurrentGameData *getCurrentGameInfo = [AccessCurrentGameData new];
            continueGameArray = [getCurrentGameInfo continueTheCurrentGame];
            [getCurrentGameInfo release];
            [continueGameArray retain];
            [continueGameArray release];

            QandA_ViewController * temp = [[QandA_ViewController alloc] init];
            [self setQanda_ViewController:temp];
            [temp release];
            [[self navigationController] pushViewController:qanda_ViewController animated:YES];
            break;
        case kTagNewGame:
            NSLog(@"kTagNewGame");
            AccessCurrentGameData *zeroCurrentGameFileFunction = [AccessCurrentGameData new];
            [zeroCurrentGameFileFunction firstCreationOrRestoreOfGameDataFile];
            [zeroCurrentGameFileFunction release];

            NewGameViewController * temp2 = [[NewGameViewController alloc] init];
            [self setNewGameViewController:temp2];
            [temp2 release];
            [[self navigationController] pushViewController:newGameViewController animated:YES];
            break;
        default:
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我删除NSLog时,我收到以下错误:

'NSMutableArray'之前的预期表达式

我不明白为什么会这样.我可以离开NSLog,但为什么呢?

Vla*_*mir 5

问题是变量声明不能直接跟随case标签.为了解决这个问题,我通常将整个案例块放在{}中:

...
case kTagNewGame:
{
        AccessCurrentGameData *zeroCurrentGameFileFunction = [AccessCurrentGameData new];
        [zeroCurrentGameFileFunction firstCreationOrRestoreOfGameDataFile];
        [zeroCurrentGameFileFunction release];

        NewGameViewController * temp2 = [[NewGameViewController alloc] init];
        [self setNewGameViewController:temp2];
        [temp2 release];
        [[self navigationController] pushViewController:newGameViewController animated:YES];
        break;
}
...
Run Code Online (Sandbox Code Playgroud)