枚举值

1 - iOS 枚举成员在赋值时往往是如下模式:左移对齐

2 - 为何这般设计 ?其一提高了阅读性;其二便于计算,能够更好的表达枚举值的含义

 1 #import "ViewController.h"
2 // 左移赋值
3 typedef enum{
4 MYOptionOne = 1, // 0b0001 MYOptionOne = 1 << 0
5 MYOptionTwo = 2, // 0b0010 MYOptionTwo = 1 << 1
6 MYOptionThree = 4, // 0b0100 MYOptionThree = 1 << 2
7 MYOptionFour = 8, // 0b1000 MYOptionFour = 1 << 3
8 }MYOptions;
9
10 @implementation ViewController
11
12 - (void)viewDidLoad {
13 [super viewDidLoad];
14
15 // 位或运算
16 [self setOptionsA:MYOptionOne | MYOptionFour];
17 /*18 0001
19 1000
20 ----
21 1001
22 */
23
24 // 在枚举成员左移对齐赋值的情况下,位或等价于加运算(不建议使用 +)
25 [self setOptionsB:MYOptionOne + MYOptionThree];
26 }
27
28
29 // 把枚举结果 options 同枚举成员进行位与运算,就会得到该枚举成员的值
30 - (void)setOptionsA:(MYOptions)options{
31
32 if (options & MYOptionOne) {
33 /*34 1001
35 0001
36 ----
37 0001
38 */
39 NSLog(@"包含 MYOptionOne");
40 }
41
42 if(options & MYOptionTwo){
43 /*44 1001
45 0010
46 ----
47 0000
48 */
49 NSLog(@"包含 MYOptionTwo");
50 }
51
52 if(options & MYOptionThree){
53 /*54 1001
55 0100
56 ----
57 0000
58 */
59 NSLog(@"包含 MYOptionThree");
60 }
61
62 if(options & MYOptionFour){
63 /*64 1001
65 1000
66 ----
67 1000
68 */
69 NSLog(@"包含 MYOptionFour");
70 }
71 }
72
73 - (void)setOptionsB:(MYOptions)options{
74
75 if (options & MYOptionOne) {
76 NSLog(@"包含 MYOptionOne");
77 }
78
79 if(options & MYOptionTwo){
80 NSLog(@"包含 MYOptionTwo");
81 }
82
83 if(options & MYOptionThree){
84 NSLog(@"包含 MYOptionThree");
85 }
86
87 if(options & MYOptionFour){
88 NSLog(@"包含 MYOptionFour");
89 }
90 }
91
92 @end

最新文章

  1. PC虚拟现实应用的性能分析与优化:从CPU角度切入
  2. SET NOCOUNT 怎么理解
  3. Mac常用终端命令
  4. nginx 的动静分离配置(tomcat)
  5. 烂泥:LVM学习之逻辑卷及卷组缩小空间
  6. HDU1557权利选举
  7. Xamarin.Forms本地化多语言
  8. Delphi 调试 通过BreakPoint
  9. WebService- 使用 CXF 开发 SOAP 服务
  10. UVA 10806 Dijkstra, Dijkstra.
  11. python 面试相关
  12. 归并排序Java实现
  13. python Http协议
  14. 当view为wrap_conten时获取一个view的具体宽高
  15. 《Windows核心编程》读书笔记 上
  16. 复习-css边框和背景属性
  17. Linux下Python2升级Python3
  18. flask(十)使用alembic,进行数据库结构管理,升级,加表,加项
  19. 会说话的HTML--语义化杂谭-TGideas-腾讯游戏官方设计团队
  20. jqury表单验证

热门文章

  1. 轻量级CI/CD发布部署环境搭建及使用_02_docker安装jenkins
  2. nginx部署+将安装包打包到requirements.txt文件中
  3. 2023.3.4Leecode982按位与为零的三元组
  4. java学习日记20230228-变量
  5. 403. 青蛙过河 (Hard)
  6. 存储型XSS的利用
  7. charles证书安装-客户端证书
  8. Gitlab CICD
  9. Oracle备份脚本(数据泵)-Windows平台
  10. error:0308010C:digital envelope routines::unsupported