Корпус в защищенном переключателе

Возможный дубликат:
При преобразовании проекта для использования ARC, что означает "случай переключения в защищенной области" , означает?

Получен следующий xcode: Но когда я пытаюсь положить что-то в случае 1 (или пустое), это дает мне ошибку?

Странная проблема, потому что я не знаю, что такое защищенный коммутатор, и как я должен его исправить. У кого-нибудь есть решение или подсказка, чтобы исправить это? Weird..

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIViewController *controller;

    switch(indexPath.row) {
        case 0:
            NSLog(@"0");

            //create instance of EKEventStore
            EKEventStore *eventStore = [[EKEventStore alloc] init];

            //creating instance of EKEvent
            EKEvent *event  = [EKEvent eventWithEventStore:eventStore];

            //setting the appropriate properties of the new event
            event.title     = @"Woow";

            //event.startDate = [[NSDate alloc] init];



            NSDateComponents *myDate2 = [[NSDateComponents alloc] init];
            [myDate2 setDay:13];
            [myDate2 setMonth:12];
            [myDate2 setYear:2011];
            [myDate2 setHour:00];
            [myDate2 setMinute:34];

            event.startDate = [[NSCalendar currentCalendar] dateFromComponents:myDate2];

            event.endDate   = [[NSDate alloc] initWithTimeInterval:3600 sinceDate:event.startDate];
            event.location = @"game2";
            event.notes = @" game";

            event.alarms = [NSArray arrayWithObject:[EKAlarm alarmWithAbsoluteDate:event.startDate]];

            [event setCalendar:[eventStore defaultCalendarForNewEvents]];
            NSError *error;
            [eventStore saveEvent:event span:EKSpanThisEvent error:&error];

            break;

        case 1:
            NSLog(@"1");    






            break;






    }

    {



        self.EKController.title = [self.EKList objectAtIndex:[indexPath row]];






    }

}


@end

Но ошибка:

Error

Ответ 2

В общем, вы никогда не должны объявлять переменные внутри тела case, если вы не завернете тело тела в {}. Большинство компиляторов C будут отмечать это как ошибку при нескольких обстоятельствах (хотя часто это очень неясно звучащая ошибка).

Причиной этого является то, что компилятор не может определить, где заканчивается область действия переменной, и если у вас есть объявление в первом теге case, тогда это выглядит так, как второй case является ветвью в в середине области переменных, что заставляет компилятор задаться вопросом, как/если он должен быть инициализирован.