iOS中switch-case的优化用法
之前使用switch-case的时候一直无法使用声明语句,只能使用调用函数的语句,今天看到了高手使用
其实也就是加一个 { } 即可。
来自于ATMHud
- (void)advancedHudActionForRow:(NSUInteger)row { [hud setBlockTouches:YES]; switch (row) { case 0: [hud setCaption:@"This HUD will auto-hide in 2 seconds."]; [hud show]; [hud hideAfter:2.0]; break; case 1: [hud setCaption:@"This HUD will update in 2 seconds."]; [hud setActivity:YES]; [hud show]; [self performSelector:@selector(updateHud) withObject:nil afterDelay:2.0]; break; case 2: { NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:.02 target:self selector:@selector(tick:) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; [hud setCaption:@"Performing operation..."]; [hud setProgress:0.08]; [hud show]; break; } case 3: { ATMHudQueueItem *item = [[ATMHudQueueItem alloc] init]; item.caption = @"Display #1"; item.image = nil; item.accessoryPosition = ATMHudAccessoryPositionBottom; item.showActivity = NO; [hud addQueueItem:item]; [item release]; item = [[ATMHudQueueItem alloc] init]; item.caption = @"Display #2"; item.image = nil; item.accessoryPosition = ATMHudAccessoryPositionRight; item.showActivity = YES; [hud addQueueItem:item]; [item release]; item = [[ATMHudQueueItem alloc] init]; item.caption = @"Display #3"; item.image = [UIImage imageNamed:@"19-check"]; item.accessoryPosition = ATMHudAccessoryPositionBottom; item.showActivity = NO; [hud addQueueItem:item]; [item release]; [hud startQueue]; [self performSelector:@selector(showNextDisplayInQueue) withObject:nil afterDelay:2]; break; } } }
其实也就是添加了大括号
case 2: { NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:.02 target:self selector:@selector(tick:) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; [hud setCaption:@"Performing operation..."]; [hud setProgress:0.08]; [hud show]; break; }