美文网首页高质量iOS,52个有效方法
第五条:用枚举表示状态、选项、状态码

第五条:用枚举表示状态、选项、状态码

作者: vim | 来源:发表于2020-07-16 17:48 被阅读0次
    简单枚举类型
    enum EOCConnectionState {
        EOCConnectionStateDisconnected,
        EOCConnectionStateConnecting,
        EOCConnectionStateConnected,
    }
    typedef enum EOCConnectionState EOCConnectionState;
    

    这样就可以简写的EOCConnectionState来代替完整的enum EOCConnectionState。

    指定底层数据类型

    enum EOCConnectionState : NSInteger {/* ... */}
    

    或者向前声明:

    enum EOCConnectionState : NSInteger;
    
    彼此组合的枚举

    各选项之间可以通过”按位或操作符”。

    enum UIViewAutoresizing {
        UIViewAutoresizingNone = 0,
        UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
        UIViewAutoresizingFlexibleWidth = 1 << 1,
        UIViewAutoresizingFlexibleRightMargin = 1 << 2,
        UIViewAutoresizingFlexibleTopMargin = 1 << 3,
        ...
    }
    
    Foundation框架辅助宏

    这些宏具有向后兼容能力。

    typedef NS_ENUM(NSUInteger, EOCConnectionState) {
        EOConnectionStateDisconnected,
        ...
    }
    
    typedef NS_OPTIONS(NSUInteger, EOCPermittedDirection) {
        EOCPermittedDirectionUp = 1 << 0,
        ...
    }
    

    用枚举定义定义状态机,最好不要有default分支。

    switch(_currentState) {
        case EOCConnectionStateDisconnected:
            break;
        case EOCConnectionStateConnecting:
            break;
        case EOCConnectionStateConnected:
            break;
    }
    

    相关文章

      网友评论

        本文标题:第五条:用枚举表示状态、选项、状态码

        本文链接:https://www.haomeiwen.com/subject/rgkmhktx.html