【问题标题】:why we are using enum in ios [duplicate]为什么我们在 ios 中使用枚举 [重复]
【发布时间】:2014-05-14 19:53:44
【问题描述】:

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

typedef enum {
    kPersonTypeFaculty,
    kPersonTypeStaff,
    kPersonTypeSearch
} 

所以请说明为什么使用枚举以及如何使用枚举

【问题讨论】:

    标签: ios iphone objective-c enums


    【解决方案1】:

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

        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;
    

    这显然可以使用NSIntegerint 来完成,但它只会使代码更具可读性并且在找出错误时有很大帮助。它还使在 XCode 之类的编辑器中编码更容易,因为您会知道该方法需要 CardState,然后您可以查看您想要使用或正在使用的状态。

    【讨论】:

      猜你喜欢
      • 2019-10-23
      • 2018-11-05
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多