我认为我从根本上不了解枚举是什么,以及何时使用它。
typedef enum {
kPersonTypeFaculty,
kPersonTypeStaff,
kPersonTypeSearch
}
所以请说明为什么使用枚举以及如何使用枚举
答案 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;
这显然可以通过NSInteger
或int
来完成,但它只是使代码更具可读性,并在弄清错误时提供了很多帮助。它还使编辑器像XCode更容易编码,因为您将知道该方法需要CardState,然后您可以查看您想要使用或正在使用的状态。