关于iphone:为什么我们在ios中使用enum

why we are using enum in ios

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
typedef enum {
    kPersonTypeFaculty,
    kPersonTypeStaff,
    kPersonTypeSearch
}

所以请考虑一下为什么使用枚举以及如何使用枚举


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    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;
    }

仅仅从这段代码就不可能找出每个case语句负责处理什么。

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

1
2
3
4
5
6
7
8
9
10
    switch(type){
        case kPersonTypeFaculty:
            break;
        case kPersonTypeStaff:
            break;
        case kPersonTypeSearch:
            break;
        default:
            break;
    }

如果更严格地声明枚举:

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

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

1
- (void) reloadCardWithState:(CardState) state;

这显然可以用NSIntegerint来完成,但它只是使代码更可读,并且在发现错误时帮助很大。它还使在Xcode这样的编辑器中进行编码变得更容易,因为您将知道该方法需要一个cardstate,然后您可以查看您希望使用或正在使用的状态。