C与Objective-C中的枚举(位移枚举)
来源:互联网 发布:命运知乎 编辑:程序博客网 时间:2024/06/05 09:08
1.在C语言
中我们用到一串有关联,被当作判断状态依据的常量时,会用到枚举Enum,其使用:
enum week{ Mon, Tues, Wed, Thurs, Fri, Sat, Sun };默认情况Mon = 0;后面依次加1,也可以自己指定:
enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun };这样Mon = 1;后面依然依次加1.
2.在Objective-C
中,因为版本,有几种实用枚举的样式。
使用C语言样式:
enum test{ t1, t2 }tt; switch (tt) { case t1: NSLog(@"t1"); break; case t2: NSLog(@"t2"); break; default: break; }感觉用起来很不爽,那么:
typedef enum{ t1, t2 }test; test tt; switch (tt) { case t1: NSLog(@"t1"); break; case t2: NSLog(@"t2"); break; default: break; }还是不够OC:
typedef NS_ENUM(NSInteger,test){ t1, t2 }; test tt; switch (tt) { case t1: NSLog(@"t1"); break; case t2: NSLog(@"t2"); break; default: break; }嗯,这回就非常OC了,推荐这样使用
3.按位位移枚举
typedef NS_ENUM(NSInteger,test){ t1 = 1, //1 对应2进制 1 左移低位0补齐 t2 = 1<<1, //2 10 t3 = 1<<2, //4 100 t4 = 1<<3, //8 1000 t5 = 1<<4, //16 10000 t6 = 1<<5 //32 100000 }; NSLog(@"t1 = %ld",t1); NSLog(@"t2 = %ld",t2); NSLog(@"t3 = %ld",t3); NSLog(@"t2 = %ld",t4); NSLog(@"t3 = %ld",t5); NSLog(@"t3 = %ld",t6);输出结果为1,2,4,8,16,32 。
那么什么情况用这种枚举呢?先上代码:
typedef NS_ENUM(NSInteger,test){ t1 = 1, //1 对应2进制 1 左移低位0补齐 t2 = 1<<1, //2 10 t3 = 1<<2, //4 100 t4 = 1<<3, //8 1000 t5 = 1<<4, //16 10000 t6 = 1<<5 //32 100000 }; test tt= (t3|t6); if((tt&t1)){ NSLog(@"有t1"); }else{ NSLog(@"没有t1"); } if((tt&t3)){ NSLog(@"有t3"); }else{ NSLog(@"没有t3"); } if((tt&t5)){ NSLog(@"有t5"); }else{ NSLog(@"没有t5"); } if((tt&t6)){ NSLog(@"有t6"); }else{ NSLog(@"没有t6"); }输出结果为:
2017-02-10 11:56:01.243 UIKitLearn[2460:69675] 没有t12017-02-10 11:56:01.243 UIKitLearn[2460:69675] 有t32017-02-10 11:56:01.243 UIKitLearn[2460:69675] 没有t52017-02-10 11:56:01.244 UIKitLearn[2460:69675] 有t6当我们对于一个事物的一种属性要用多种状态描述时,比如一行字,是 3号黑体有下划线的,就应该这样 3号|黑体|下划线,用或的方式集成多种状态,再判断某种状态有没有。
2 0
- C与Objective-C中的枚举(位移枚举)
- Objective-C中的枚举类型
- Objective-C中的枚举类型
- Objective-c 枚举类型
- Objective-c 枚举访问
- Objective-C枚举写法
- c 与 c++ 中的枚举
- OC中的位移枚举
- C语言 枚举类型 在 Objective-C中的演变
- iOS 与 位移枚举
- objective-c 的枚举用法
- Objective-C枚举类型详解
- Objective-C 枚举的使用
- C/C++中的枚举
- C语言中的枚举
- c语言中的枚举
- c#线程与枚举
- Objective-C枚举的几种定义方式与使用
- Hashmap实现原理
- matlab 稀疏矩阵求 特征值
- 全排列-递归实现-C描述
- Linux -- fcntl修改文件状态标志
- 投简历,绝不能错过这几个最佳时间点
- C与Objective-C中的枚举(位移枚举)
- ABBYY中如何使用样式编辑器
- JavaWeb
- angularjs手动识别字符串中的换行符
- Spring bean的生命周期
- 初探angularJS 一
- Unity2D常用API
- 761B Dasha and friends
- ApkToolPlus,一个可视化的跨平台 apk 分析工具