0

我正在调用一种方法来设置状态,在本例中为 animateState。状态参数可以是定义的集合之一:例如“hide”、“show”、“active”、“inactive”。所以它不仅仅是 BOOL,但比开放的 NSString 更独特。

目前我正在通过使用 NSString 来解决这个问题,并使用它的isEqual方法检查状态。它有效,但并不理想。

-(void) animateState:(NSString*)state{
    if ([state isEqual:@"hide"]){
...
    } else if ([state isEqual:@"show"]){
...
    } else if ([state isEqual:@"active"]){
...
    } else if ([state isEqual:@"inactive"]){
...
    }
}

如何限制参数并最终使 if/switch 检查更有效?这种情况有什么最佳实践吗?

4

1 回答 1

7

enum在这里做得很好,enum在头文件中定义某处:

typedef enum{
    AnimateStateHide,
    AnimateStateShow,
    AnimateStateActive,
    AnimateStateInactive
} AnimateState;

然后你可以像这样调用你的方法:

-(void) animateState:(AnimateState)state{
    switch(state) {

        case AnimateStateHide:
            //Code here;
            break;

        case AnimateStateShow:
            //Code here;
            break;

        case AnimateStateActive:
            //Code here;
            break;

        case AnimateStateInactive:
            //Code here;
            break;
    }
}
于 2013-03-29T14:02:29.530 回答