一、C语言中
1、C语言中的枚举类型enum。在以一系列常量来表示错误状态码或可组合的选项时,极宜使用枚举为其命名。
2、定义一个enum
enum personAgeState {
personAgeStateLitter,
personAgeStateBigger
};
@property (nonatomic, assign) enum personAgeState personAge;
enum personAgeState personAge = personAgeStateLitter;
3、可以使用typedef关键字重新定义枚举类型
enum personAgeState {
personAgeStateLitter,
personAgeStateBigger
};
typedef enum personAgeState personAgeState;
@property (nonatomic, assign) personAgeState personAge;
personAgeState personAge = personAgeStateLitter;
4、可以指明用何种“底层数据类型”来保存枚举类型的变量。这样做的好处是,可以向前声明枚举变量了。若不指定底层数据类型,则无法向前声明枚举类型,因为编译器不清楚底层数据类型的大小,所以在用到此枚举类型时,也就不知道究竟该给变量分配多少空间。
enum waitState : NSInteger {
waitStateLitter = 2,
waitStateStrong
};
@property (nonatomic, assign) enum waitState : NSInteger waitState;
enum waitState : NSInteger waitState1 = waitStateLitter;
5、在定义选项的时候,应该使用枚举类型。若这些选项可以彼此组合,则更应如此。只要枚举定义得对,各选项之间就可以通过 “按位或操作符”来组合。
enum UIViewAutoresizing {
UIViewAutoresizingNone                 = 0,
UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
UIViewAutoresizingFlexibleWidth        = 1 << 1,
UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
UIViewAutoresizingFlexibleHeight       = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
如果把传递给某个方法的选项表示为枚举类型,而多个选项又可以同时使用,那么就将各选项值定义为2的幂,以便通过按位或操作将其组合起来。
二、OC语言中
Foundation框架中定义了一些辅助的宏,用这些宏来定义枚举类型时,也可以制定用于保存枚举值的底层数据类型。这些宏具备向后兼容能力,如果目标平台的编译器支持新标准,那就使用新式语法,否则改用旧式语法。
1、
typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
};

上面用NS_ENUM宏所定义的枚举类型展开之后就是:
typedef enum UIViewAnimationTransition : NSInteger UIViewAnimationTransition;
enum UIViewAnimationTransition : NSInteger {
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
};
2、
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
UIViewAutoresizingNone                 = 0,
UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
UIViewAutoresizingFlexibleWidth        = 1 << 1,
UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
UIViewAutoresizingFlexibleHeight       = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};

三、枚举值与switch语句
在处理枚举类型的switch语句中不要实现default分支。这样的话,假如新枚举之后,编译器就会提示开发者:switch语句并未处理所有枚举。

转载于:https://www.cnblogs.com/cchHers/p/6946579.html

5、用枚举值表示状态、选项、状态码相关推荐

  1. SQL Server 数据库状态选项

    选项 1. single_user(单用户),multi_user(多用户),restricted_user(受限用户); 描述数据库的用户访问属性,它们互斥,设置其中任何一个选项就会取消对其它选项的 ...

  2. 将枚举值转换为DropDownList等的选项值

    应用场景:在项目中,我们已习惯将较稳定的分类标准定义为枚举,来保证程序中取值的合法性,也使代码更清晰.某些情况下我们需要在DropDownList等选择控件上绑定某个枚举的所有枚举值,供用户自行选择, ...

  3. Flink 状态管理:算子状态、键值分区状态、状态后端、有状态算子的扩缩容

    文章目录 状态管理 算子状态 键值分区状态 状态后端(State Backends) 有状态算子的扩缩容 状态管理 通常意义上,函数里所有需要任务去维护并用来计算结果的数据都属于任务的状态,可以把状态 ...

  4. 根据value值设置radio选中状态

    //根据value值设置radio选中状态 <input type="radio" class="sex" name="sex" va ...

  5. VMware虚拟机设置 桥接模式:直接连接物理网络下的复制物理网络连接状态选项有什么作用?(续订ip)

    如图在虚拟机设置里桥接模式:直接连接物理网络下有一个复制物理网络连接状态选项,这个是做什么用的? 官网链接:为现有虚拟机配置桥接模式网络连接 续订IP是指网卡从路由器的DHCP服务器获得IP地址的过程 ...

  6. 【若依(ruoyi)】swagger 接口 @ApiModelProperty 添加枚举值说明

    前言 若依(ruoyi): v4.3 swagger 1.5.21 (https://github.com/swagger-api/swagger-core) 在 @ApiModelProperty ...

  7. java实体类中有枚举类型_当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出?...

    当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出? 问题: orderStatus 和 payStatus都是枚举类,并且枚举的个数达地10来个,我们不可能在模板页面(jsp/ftl ...

  8. 与众不同 windows phone (23) - Device(设备)之硬件状态, 系统状态, 网络状态

    原文:与众不同 windows phone (23) - Device(设备)之硬件状态, 系统状态, 网络状态 [索引页] [源码下载] 与众不同 windows phone (23) - Devi ...

  9. AS400银行核心系统开发中的技术总结--数据字典和枚举值

    *数据字典和枚举值 在核心系统应用开发中,数据字典有举足轻重的作用.数据字典是对系统中所有字段的归纳抽象,需要规范同类字段的类型长度,方便定义和修改.     但是,在过去的核心系统中,数据字典的理解 ...

最新文章

  1. nginx+redis多进程镜像制作
  2. JUC多线程:创建线程的四种方式
  3. WS-Security:使用BinarySecurityToken进行身份验证
  4. Android:JNI 与 NDK的区别(含实例教学)
  5. 假的!微信上询问商品会被封号 微信朋友圈公布1月份十大谣言
  6. python socket 通信(2) 协程实现多人聊天室
  7. access抓取数据_网页数据抓取之当当网
  8. Android应用按Home键再从图标启动会再次经过LAUNCHER启动页
  9. Dev C++软件的下载安装与使用
  10. java生成pdf文档
  11. Spring IoC 详解(下篇)
  12. 每秒浮点运算次数FLOPS
  13. 太原计算机专业学校在哪里,太原信息技术学校在哪里
  14. SAS 方差分析(复习4)
  15. 大觉寺到鹫峰线路_大觉寺-萝卜地北尖-鹫峰徒步线路攻略--登山备查
  16. 桑基图绘制的简易操作
  17. goland连接数据库
  18. 不得不看的经典软件测试面试问题
  19. 再探勒索病毒之删除卷影副本的方法
  20. 关于VBS 文件执行后自动删除执行的文件

热门文章

  1. Java 基础——数组解析
  2. 一个系统中同时使用VC6.0+OpenCV1.0和VS2010+OpenCV2.4.6.0的方法
  3. GCC优化选项:一般的文档里不容易找到的-Os
  4. Adobe FLASH CS3快捷键(时间轴常用)
  5. O_RDWR, O_CREAT等open函数标志位在哪里定义?
  6. oracle数据导入sqlldr小例子
  7. 安卓USB开发教程 六 安卓 AOA 2.0
  8. 重学java基础第一课:解决大家的疑问
  9. 前端学习(3083):vue+element今日头条管理-表单数据绑定
  10. [jQuery] 针对jQuery的优化方法有哪些?