iOS enum 定义与使用
枚举其实很重要,特别是在应用开发初期,服务器端数据格式需要更改得情况下,枚举和宏都能是程序简洁,并且改动小。
网上有个人写的言简意赅,适合初学
转自:http://blog.csdn.net/ysy441088327/article/details/8012677
题记: 蛋疼的枚举, 千万别小视了! 进入正题: 首先要知道的是,枚举值 它是一个整形(int) 并且,它不参加内存的占用和释放 枚举定义变量即可直接使用,不用初始化. 枚举的定义如下:
typedef enum {
//以下是枚举成员 TestA = 0,
TestB,
TestC,
TestD
}Test;//枚举名称
亦可以如下定义(推荐:结构比较清晰):
typedef NS_ENUM(NSInteger, Test1) {
//以下是枚举成员
Test1A = 0,
Test1B = 1,
Test1C = 2,
Test1D = 3
};
枚举的定义还支持位运算的方式定义,如下: 等于号后面必须等于1
typedef NS_ENUM(NSInteger, Test) {
TestA = 1, //1 1 1
TestB = 1 << 1, //2 2 10 转换成 10进制 2
TestC = 1 << 2, //4 3 100 转换成 10进制 4
TestD = 1 << 3, //8 4 1000 转换成 10进制 8
TestE = 1 << 4 //16 5 10000 转换成 10进制 16
};
什么时候要用到这种方式呢? 那就是一个枚举变量可能要代表多个枚举值的时候. 其实给一个枚举变量赋予多个枚举值的时候,原理只是把各个枚举值加起来罢了. 当加起来以后,就获取了一个新的值,那么为了保证这个值的唯一性,这个时候就体现了位运算的重要作用. 位运算可以确保枚举值组合的唯一性. 因为位运算的计算方式是将二进制转换成十进制,也就是说,枚举值里面存取的是 计算后的十进制值. 打个比方: 通过上面的位运算方式设定好枚举以后,打印出来的枚举值分别是: 1 2 4 8 16 这5个数字,无论你如何组合在一起,也不会产生两个同样的数字.
多枚举值 赋值方式如下:
Test tes = (TestA|TestB);
判断枚举变量是否包含某个固定的枚举值,使用前需要确保枚举值以及各个组合的唯一性:
NSLog(@"%d %d %d %d %d",TestA,TestB,TestC,TestD,TestE);
Test tes = (TestA|TestB); NSLog(@"%d",tes);
NSLog(@"%d",(tes & TestA));
if ((tes & TestA)) { NSLog(@"有"); }
else { NSLog(@"没有"); } NSLog(@"%d",(tes & TestB));
if ((tes & TestA)) { NSLog(@"有"); }
else { NSLog(@"没有"); }
NSLog(@"%d",(tes & TestC));
if ((tes & TestC)) { NSLog(@"有"); }
else { NSLog(@"没有"); }
如果 没有包含,将返回0, 0表示false NO 则进入else 也可以随时为枚举变量累加某个值,但是要自己控制不要添加已经加入过的枚举值, 枚举变量的值不会有变动,但这样将会误导阅读代码的人
有累加,自然有累减了,如果累减不存在的枚举值, 那么本次累减的枚举值,会自动累加上去.
tes^= TestE;
转载于:https://www.cnblogs.com/ejllen/p/3745264.html
iOS enum 定义与使用相关推荐
- C++ 笔记(07)— 常量(字面常量、const定义常量、constexpr 定义常量、enum 定义常量、define 定义常量)
在 C++ 中,常量类似于变量,只是不能修改.与变量一样,常量也占用内存空间,并使用名称标识为其预留的空间的地址,但不能覆盖该空间的内容. 常量可以是任何的基本数据类型,可分为整型数字.浮点数字.字符 ...
- iOS宏定义的使用与规范
2019独角兽企业重金招聘Python工程师标准>>> 宏定义在很多方面都会使用,例如定义高度.判断iOS系统.工具类,还有诸如文件路径.服务端api接口文档.为了对宏能够快速定位和 ...
- iOS单例模式定义与使用
单例模式是iOS开发中常用的一种设计模式,目的在于创建一次对象,多地方使用. 系统中的单例例如:UIApplication. NSUserDefaults 等,开发中我们可以用作用户管理. Objec ...
- java enum 定义属性_java enum(枚举)使用详解 + 总结
enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中. 下面是我在使用 enum 过程中的一些经验和总结,主要包括如下内容: 8. 总结 ...
- C#枚举enum定义使用
1.枚举enum的用途浅例 写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, rai ...
- ios系统定义的url
App-prefs:root=WIFI 无线局域网 App-Prefs:root=Bluetooth 蓝牙 App-prefs:root=INTERNET_TETHERING 个人热点 App-pre ...
- enum 定义3个属性_和平精英:合金龙骨有3个隐藏属性,比玛莎“水下无敌”还唬人...
欢迎诸位小伙伴们来到天哥开讲的<和平精英>"精英那点事儿"~接下来呢,咱们聊聊合金龙骨的3个隐藏属性.土豪玩家"自投罗网"以及游戏里的"公 ...
- iOS开发-Swift进阶之枚举enum!
swift进阶总汇 本文主要介绍enum的常见使用形式,以及枚举大小是如何计算的 补充:添加脚本自动生成SIL 通过target -> +,选择 other -> Aggregate,然后 ...
- iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS
一般情况下,我们采用C风格的enum关键字可以定义枚举类型. enum{ UIViewAnimationTransitionNone,UIViewAnimationTransitionFlipFrom ...
最新文章
- OpenCV 学习笔记03 boundingRect、minAreaRect、minEnclosingCircle、boxPoints、int0、circle、rectangle函数的用法...
- 全球及中国本质安全校准器行业销售前景与竞争规模预测报告2022-2027年
- 一些重要的算法(转)
- SpringMVC的数据响应-页面跳转-返回ModelAndView形式2(应用)
- python字典循环添加元素_牛鹭学院:学员笔记|python字典、列表、循环
- python怎么让py里面逐行运行_怎样在安卓上运行python
- NumPy Cookbook 带注释源码 十一、NumPy 的底牌
- 服务器虚拟化相关问题分析,服务器虚拟化中遇到的存储问题分析
- was java heap_Websphere产生大量javacore与heapdump文件的分析
- 我,27岁,程序员,今年无情被辞:该转行还是降薪和年轻人抢饭碗?
- Practical Node.js摘录(2018版)第1,2章。
- 星环科技TDH基于Overlay网络架构为数据安全保驾护航
- 警察抓小偷打字游戏JAVA_警察抓小偷打字游戏金山打字通游戏
- ROS系列书籍--机械工业出版社
- MySQL高级索引及调优篇
- 在MS Word 中添加 Mathtype 插件(vbe6ext.olb不能被加载问题 已解决)
- c语言中100m怎么表示,科目三道路驾驶技能和安全文明驾驶常识考试满分分别为100分,成绩分别达到80和90分的为合格。...
- 基于MATLAB的拼图游戏设计(图文详解,附完整代码)
- 四心圆法画椭圆原理_四心圆法画椭圆的解析画法
- 阿里云自定义域名详细过程----hexo博客配置实测详细过程整理之二
热门文章
- KernelIoControl和OEMIoControl的分析和使用(作者:wogoyixikexie@gliet)
- Access数据库审计工具mdbtools
- java io nio socket_通过socket编程掌握IO流 —— NIO
- android 启动模式_安卓学习笔记之Android中Activity的4种启动模式
- 上海交大情感脑电数据集(SJTU Emotion EEG Dataset,SEED)
- eeglab中文教程系列(4)-预处理工具
- 搜集的一些项目源码,改改就能用
- 基于Android移动终端的微型餐饮管理系统的设计与实现3-技术整合
- 自动驾驶系统为何要打上「思想钢印」?北京顺义闹市区里藏着毫末智行的谜底...
- 用安卓手机解锁目标检测模型YOLOv5,识别速度不过几十毫秒!