美文网首页
iOS-枚举类型为什么要用<<

iOS-枚举类型为什么要用<<

作者: 小猫仔 | 来源:发表于2017-09-21 12:03 被阅读0次

在枚举中我们经常看到<<这样的位运算符。如果我们在枚举中看到<<那我们就可以通过|(位运算符:或)进行组合使用:

[field addTarget:self action:@selector(textFieldDidChanged) forControlEvents: UIControlEventEditingDidBegin |UIControlEventValueChanged |UIControlEventEditingDidEnd

];

如果没有<<就是普通数据类型的枚举,不能组合使用。

苹果官方是怎么知道我们多个条件组合使用了呢?通过&(位运算符:与)进行判断:

/**

//通过 & 来判断是否包含:

UIControlEventEditingDidBegin,

UIControlEventValueChanged,

UIControlEventEditingDidEnd

*/

if (controlEvents & UIControlEventEditingDidBegin) {

NSLog(@"UIControlEventEditingDidBegin");

}else if (controlEvents & UIControlEventValueChanged) {

NSLog(@"UIControlEventValueChanged");

}else if (controlEvents & UIControlEventEditingDidEnd) {

NSLog(@"UIControlEventEditingDidEnd");

}

typedef NS_OPTIONS(NSInteger,myTests){

testA = 1 << 0

testB = 1<<1

testC = 1<<2

testD = 1<<3

}

typedef enum{

testA = 1 << 0

testB = 1<<1

testC = 1<<2

testD = 1<<3

}myTests;

testA = 1 << 0  :值为1(2的0次方)

testB = 1<<1   :值为2 (2的1次方)

testC = 1<<2

testD = 1<<3

通过&进行判断我们来看看输出结果如下图:

NSInterger value = testA |testB;

NSlog(@“%zd,%zd,%zd,%zd”,value&testA,value&testB,value&testC,value&testD)结果:1,2,0,0;

a<<b:左移:就是把操作数转化为二进制后向左b位,在后面添b个0.

3、枚举的宏(NS_ENUM 与NS_OPTIONS)和enum的区别

NS_ENUM:是用来声明一般的NSInter的类型的枚举。

NS_OPTIONS:是用来声明位掩码。

enum可以声明一般类型和位掩码类型。NS_都是声明位掩码类型。

问题来了,直接用enum不可以吗?苹果建议我们在OC中使用(NS_ENUM 与NS_OPTIONS),因为它们除了推断不出不同类型的枚举,再就是当编译Objective_C++时,它们产生的代码是不同的,在混编时候使用enum会报错。

相关文章

  • iOS-枚举类型为什么要用<<

    在枚举中我们经常看到<<这样的位运算符。如果我们在枚举中看到<<那我们就可以通过|(位运算符:或)进行组合使用: ...

  • 枚举

    枚举 wiki Java的枚举类型用法介绍 深入理解Java枚举类型(enum) 为什么要用enum? 学习计划 ...

  • go 枚举类型

    这里需要用到enum库 定义一个枚举类型 操作枚举enum 查看枚举值 修改自定义枚举值 添加和移除枚举值

  • Effective Java(3rd)-Item36 使用Enu

      如果枚举类型的元素主要用于集合,传统上使用int枚举类型( item34)为每个常量分配2的不同幂:   该表...

  • 枚举

    使用enum关键字来定义1个枚举,枚举是一个值类型 枚举里面只能定义枚举成员,每个成员,分割 枚举里面成员不需要用...

  • C语言基础 之 枚举类型

    枚举类型 枚举类型: 列出所有可能的值 枚举类型的定义 枚举类型定义的一般格式:enum 枚举类型名 {枚举值表}...

  • Swift 基础笔记 - 枚举

    枚举 OC定义和使用枚举 Swift定义枚举类型 Swift判断枚举类型 枚举成员类型

  • 枚举

    枚举 枚举就是专门用来表示几种固定类型的取值 枚举的本质就是基本数据类型,整型 枚举类型定义格式 定义枚举类型变量...

  • JavaScript中的Enum枚举类型数据

    一、枚举类型介绍 1、枚举类型 如果接触过其它语言或者TypeScript,大概对于枚举类型有一些了解。枚举类型是...

  • TS学习笔记(6)-枚举类型

    枚举类型 ========= 知识点 枚举类型的定义方法 枚举类型的使用方法 代码

网友评论

      本文标题:iOS-枚举类型为什么要用<<

      本文链接:https://www.haomeiwen.com/subject/exhasxtx.html