• 用枚举表示状态码


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

    比如说:

    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语句并未处理所有分支。

  • 相关阅读:
    [知乎作答]·关于在Keras中多标签分类器训练准确率问题
    [深度应用]·Keras极简实现Attention结构
    工作队列work queues 公平分发(fair dispatch) And 消息应答与消息持久化
    RabbitMQ 之 WorkQueues工作队列
    RabbitMQ初体验
    RabbitMQ 简单了解以及使用
    画龙点睛 之RabbitMQ 初来乍到
    JVM 深入浅出
    HashMap和ConcurrentHashMap和HashTable的底层原理与剖析
    Lucene
  • 原文地址:https://www.cnblogs.com/langji/p/6043458.html
Copyright © 2020-2023  润新知