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;
        }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM