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;
        }
posted on 2012-08-16 11:32  easonoutlook  阅读(22310)  评论(2编辑  收藏  举报