在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,应该把枚举的每个分支都包括