iOS枚举

在iOS中定义枚举可以帮我们减轻不少工作
枚举定义有两种一种是数值 一种是按照位移

enum JQConnectState : NSInteger{
   JQConnectStateDefault = 0,
   JQConnectStateStart ,
   JQConnectStatePause ,
   JQConnectStateStop ,
};
typedef enum JQConnectState JQConnectState;

enum JQCarSupportOrientation : NSInteger{
    JQCarSupportOrientationNone = 0 ,
    JQCarSupportOrientationTop = 1 << 1 ,
    JQCarSupportOrientationLeft = 1 << 2 ,
    JQCarSupportOrientationRight = 1 << 3 ,
    JQCarSupportOrientationButtom = 1 << 4 ,
};
typedef enum JQCarSupportOrientation JQCarSupportOrientation;

位移的用处在于可以组合使用,比如我们要判断是否支持两个方向的移动。

return  move| JQCarSupportOrientationLeft|JQCarSupportOrientationButtom;

iOS提供了两个宏简化枚举的定义

typedef NS_ENUM(NSUInteger, JQConnectState) {
    JQConnectStateDefault = 0,
    JQConnectStateStart,
    JQConnectStatePause,
    JQConnectStateStop,
};

typedef NS_OPTIONS(NSUInteger, JQCarSupportOrientation) {
    JQCarSupportOrientationNone = 0 ,
    JQCarSupportOrientationTop = 1 << 1 ,
    JQCarSupportOrientationLeft = 1 << 2 ,
    JQCarSupportOrientationRight = 1 << 3 ,
    JQCarSupportOrientationButtom = 1 << 4 ,
};

NS_ENUM用作通用 NS_OPTIONS用作位移枚举

在定义枚举的时候注意,最好指定枚举底层的数据
enum JQConnectState : NSIntege(数据类型)
NS_ENUM(NSUInteger(数据类型), JQConnectState)

另外在Effective-ObjC中也指出在switch分支中使用枚举,尽量不要使用default,应该把枚举的每个分支都包括

你可能感兴趣的:(iOS枚举)