可能性のある複製:
ARCを使用するようにプロジェクトを変換する場合、「switch case is protected scope」とはどういう意味ですか?
次のxcodeを手に入れました:しかし、ケース1(または空)に何かを入れようとすると、エラーが発生しますか?
保護されたスイッチとは何か、どのように修正すべきかわからないので、奇妙な問題です。これを解決する解決策や手がかりはありますか?奇妙な..
- (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
しかし、エラー:
各switchステートメントを{}
中括弧でラップする必要があります。例えば:
switch (someInt) {
case 0:
{
NSLog(@"Case 0");
}
break;
case 1:
{
NSLog(@"Case 1");
}
break;
}
これはすでにここで答えられています- ARCを使用するようにプロジェクトを変換するとき、「スイッチケースは保護されたスコープ内にある」とはどういう意味ですか?
一般に、ケース本体を{}
でラップしない限り、case
本体内で変数を宣言しないでください。ほとんどのCコンパイラは、いくつかの状況下でエラーとしてフラグを立てます(多くの場合、非常に不明瞭なエラーです)。
これは、変数のスコープがどこで終わるかをコンパイラが判断できないため、最初のcase
本体に宣言がある場合、2番目のcase
は変数のスコープの真ん中に分岐し、コンパイラに初期化の方法/方法を疑問視させます。