如何捕获状态 - 比BOOL更灵活但比NSString更明显

时间:2013-03-29 13:57:20

标签: ios objective-c

我正在调用一种设置状态的方法,在本例中为 animateState 。 state参数可以是定义的集合之一:例如“隐藏”,“显示”,“活跃”,“不活跃”。所以它不仅仅是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检查更有效?这种情况的最佳做法是什么?

1 个答案:

答案 0 :(得分: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;
    }
}