【发布时间】:2014-05-14 19:53:44
【问题描述】:
我认为我根本不了解枚举是什么以及何时使用它。
typedef enum {
kPersonTypeFaculty,
kPersonTypeStaff,
kPersonTypeSearch
}
所以请说明为什么使用枚举以及如何使用枚举
【问题讨论】:
标签: ios iphone objective-c enums
我认为我根本不了解枚举是什么以及何时使用它。
typedef enum {
kPersonTypeFaculty,
kPersonTypeStaff,
kPersonTypeSearch
}
所以请说明为什么使用枚举以及如何使用枚举
【问题讨论】:
标签: ios iphone objective-c enums
枚举并非完全必要,但它们使代码更易于阅读和理解。以这段代码为例:
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 语句负责处理什么。
如果我们使用枚举,这就是它的样子,如果我们碰巧遗漏了默认语句并错过了一个案例,编译器也会帮助我们:
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,然后您可以查看您想要使用或正在使用的状态。
【讨论】: