ios - 如何捕获状态 - 比 BOOL 更灵活但比 NSString 更独特

标签 ios objective-c

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

最佳答案

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

关于ios - 如何捕获状态 - 比 BOOL 更灵活但比 NSString 更独特,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15704746/

相关文章:

iphone - 为自定义 UIButton 编写 Popover segue

ios - 在具有部分索引的 UITableView 上使用从右到左的 UIScreenEdgePanGestureRecognizer

objective-c - 尝试通过快速枚举 NSMutableArray 将 UILabel 动态添加到 View

ios - 正确使用 DrawRect 覆盖 - 我可以防止 View 拉伸(stretch)吗?

iphone - 具有动态对象数的自定义 TableView 单元格创建

ios - 搜索栏背景颜色灰色 ios7

ios - UITextView 中的控制选择

ios - 我应该将数据存储在我的自定义 UITableView 中吗?

ios - while 循环条件不重新评估

ios - Swift - 根据屏幕大小设置 UIView 的大小