为什么我们在ios中使用enum

时间:2014-04-03 06:52:52

标签: ios iphone objective-c enums

我认为我从根本上不了解枚举是什么,以及何时使用它。

typedef enum {
    kPersonTypeFaculty,
    kPersonTypeStaff,
    kPersonTypeSearch
} 

所以请说明为什么使用枚举以及如何使用枚举

1 个答案:

答案 0 :(得分:2)

枚举并非完全必要,但它们使代码更易于阅读和理解。以这段代码为例:

    switch(type){
        case 0:
            //do something
            break;
        case 1:
            //do something else
            break;
        case 2:
            //do something else
            break;
        default:
            //do the general case
            break;
    }

仅从这段代码中就无法弄清楚每个案例陈述负责处理的内容。

如果我们使用枚举,这就是它的样子,如果我们碰巧遗漏了默认语句并错过了一个案例,编译器也会帮助我们:

    switch(type){
        case kPersonTypeFaculty:
            break;
        case kPersonTypeStaff:
            break;
        case kPersonTypeSearch:
            break;
        default:
            break;
    }

如果你更严格地声明你的枚举:

typedef enum CardState : NSUInteger {
    CardStateActivated = 0,
    CardStateArchived = 1,
    CardStateDepleted = 2,
    CardStateUnauthorized = 3
} CardState;

你现在可以做的是使用枚举类型作为方法的参数。如:

- (void) reloadCardWithState:(CardState) state;

这显然可以通过NSIntegerint来完成,但它只是使代码更具可读性,并在弄清错误时提供了很多帮助。它还使编辑器像XCode更容易编码,因为您将知道该方法需要CardState,然后您可以查看您想要使用或正在使用的状态。