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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自:http://mp.weixin.qq.com/s?__biz=MzA3NzM0NzkxMQ==&mid=...
    YYT1992阅读 731评论 3 0
  • NS_ENUM和NS_OPTIONS提供了简洁的枚举类型变量的定义方法。这两个方法定义了枚举变量的数据类型和名称,...
    chsasaw阅读 1,688评论 0 0
  • 已被此妹萌哭,好了,废话不多说,进入正题,今天介绍一下objective-c中的枚举 提要 首先要知道的是,枚举值...
    上冬十二阅读 7,291评论 2 10
  • 什么是枚举 在程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。如果能在程序中用自然语言...
    Japho阅读 7,684评论 12 25
  • iOS 枚举 使用typedef NS_ENUM 用法: 常用三种方式,普通使用推荐枚举NS_ENUM方式,如果需...
    ZYWu阅读 1,849评论 3 4