用枚举表示状态码

枚举只是一种常量命名方式。某个对象所经历的各种状态就可以定义为一个简单的枚举集。

比如说:

enum EOCConnectionState {
   EOCConnectionStateDisconnected,
   EOCConnectionStateConnecting,
   EOCConnectionStateConnected,
};

由于每种状态都用一个便于理解的值来表示,所以这样写出来的代码更易读懂。

编译器会为枚举分配一个独有的编号,从0开始,每个枚举递增1。

实现枚举所用的数据类型取决于编译器,不过其二进制位的个数必须能完全表示下枚举编号才行。

在上图中,由于最大编号是2,所以使用1个字节的char类型即可。

但是这种写法非常不简洁。

enum EOCConnectionState state = EOCConnectionStateDisConnected;

 

所以我们常用以下这种写法

typedef NS_ENUM(NSUInteger, EOCConnectionState){
  EOCConnectionStateDisconnected,
  EOCConnectionStateConnecting,   
  EOCConnectionStateConnected,
};

 

要点:

1.应该用枚举来表示状态机的状态、状态码等值,给这些值起个易懂的名字

2.如果把传递给某个方法的选项表示为枚举类型,而多个选项又可同时使用,那么就将各选项值定义为2的幂,以便通过按位或操作将其组合起来

3.用NS_ENUM宏来定义枚举类型,并指明底层数据类型,这样做可以确保枚举是开发者选用的数据类型实现的,而不会采用编译器所选的类型。

4.在处理枚举类型的switch语句时,不要实现default分支,这样的话,加入新枚举之后,就会提示开发者:switch语句并未处理所有分支。

 

转载于:https://www.cnblogs.com/langji/p/6043458.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值