OC基础 - iOS在枚举赋值时为何采用左移格式
枚举值
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
OC基础 - iOS在枚举赋值时为何采用左移格式的更多相关文章
- ios开发之OC基础-ios开发学习路线图
本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...
- OC基础--结构体 枚举做类成员属性
结构体 枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期 毕业日期 -- 结构体 代码示例: 声明文件 Student.h: #import <Foundation ...
- iOS -- 给model赋值时走了[self setValuesForKeysWithDictionary:dic]不走setvalue: forked:
这是一个小坑, 看看你的BaseModel的便利构造器的方法: + (__kindof BaseModel *)modelWithDic:(NSDictionary *)dic { return [[ ...
- iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误
在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握 ...
- iOS 阶段学习第11天笔记(OC基础知识)
iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import 用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...
- OC基础7:变量和数据类型
"OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.有时候初始化需要让对象带有初始值,那么 ...
- OC基础--数据类型与表达式
前言 做iOS开发有3年了,从当初的小白到现在,断断续续看过很多资料,之前也写过一些博文来记录,但是感觉知识点都比较凌乱.所以最近准备抽时间把iOS开发的相关知识进行一个梳理,主要分为OC基础.UI控 ...
- OC基础--字符串
前言 做iOS开发有3年了,从当初的小白到现在,断断续续看过很多资料,之前也写过一些博文来记录,但是感觉知识点都比较凌乱.所以最近准备抽时间把iOS开发的相关知识进行一个梳理,主要分为OC基础.UI控 ...
- 【已解决】Https请求——基础连接已经关闭 发送时发生错误
本人在做商用项目的推送消息功能时,借助第三方推送服务.这里避免有打广告的嫌疑,就不报名字了.由于是通过调用API接口,所以Post方法是自己写的,但是在开发环境是可以正常推送的,但是一上线就出各种问题 ...
- OC基础 内存管理
OC基础 内存管理 我们所了解的c语言内存管理,如下: (1)c语言的内存分配:char *p = (char*)malloc(100*sizeof(char)); (2)c语言的内存释放:free ...
随机推荐
- 梅毒感染者能否应用TNF抑制剂
对于伴发的未经控制的任何严重感染,都不适合使用TNF抑制剂.在1998年国际上首个TNF抑制剂获批治疗类风湿关节炎(RA)以来,这就是广大临床医生和风湿性疾病患者的共识.在临床实践中,需要权衡药物的利 ...
- Postgresql 全局索引与分区索引对于SQL性能影响的比较及DDL操作后分区全局索引是否会失效
Postgresql 提供了对于分区表 global index 的支持.global index 不仅提供了对于唯一索引功能的改进(无需包含分区键),而且在性能上相比非global index (l ...
- AD域
一.介绍 [域] 存放在 [活动目录] 存放在 [域控制器] 二.域和活动目录的规划 三.安装域控制器
- ChatGpt聊天API使用
昨天ChatGpt发布了聊天API,新增了两个模型,目前还是测试阶段 gpt-3.5-turbo 功能强大的GPT-3.5模型,专门针对聊天做了优化 gpt-3.5-turbo-0301 此模型只支持 ...
- switch-声明和类型模式匹配
1.声明和类型模式:类型为 T 的声明模式在表达式结果为非 NULL 且满足以下任一条件时与表达式匹配 var numbers = new int[] { 10, 20, 30 }; Console. ...
- Vulnhub:PowerGrid-1.0.1靶机
kali:192.168.111.111 靶机:192.168.111.182 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --script=http-enum 192.168. ...
- lg9019题解
容易发现,向左跳是不优的. 而且除了最后一次跳跃,每次跳跃一定跳到现在能够跳到的最右的区间. 设\(r_i\)表示第\(i\)个区间能够跳到的最右的区间,\(l_i\)表示第\(i\)个区间能够跳到的 ...
- django搭建简易blog
目录 下载安装django 创建一个django项目 创建一个django应用 models.py urls.py views.py admin.py 配置应用到项目下 路由设置urls.py set ...
- Stanford NLP 在Python环境中安装、介绍及使用
Stanford NLP Stanford NLP提供了一系列自然语言分析工具.它能够给出基本的词形,词性,不管是公司名还是人名等,格式化的日期,时间,量词,并且能够标记句子的结构,语法形式和字词依赖 ...
- [后端-Python]-项目练习集
1 1. 2 ''' 3 knowledge_point: 4 1.练习if...else: 5 2.练习while; 6 3.练习列表的切片取值: 7 8 requirements: 9 购物车: ...