您的位置:首页 > 其它

ENUM 枚举的使用

2018-02-27 14:07 288 查看
为什么要写这个知识点?

这个知识点很简单,网上百度几分钟就能学会,我也是很早之前就知道并且会使用,但在项目开发中,时常在需要运用到这个的时候,总会忘记使用它!

枚举的运用的地方?

个人理解:当一个属性有多种类型值的时候。例如:商品购买状态:1.未购买,2.购买中,3.购买成功,4.发货成功,5.收货成功。

举个例子,我们想要在开发中根据四季的变化做不同的操作,我们首先想到的可能会是定义一个int型变量,通过为该变量赋不同的值来表示四季(e.g. 1为春天,2为夏天,3为秋天,4为冬天).但是,对于阅读该份代码的人来讲,他们并不能在短时间内就明白数字1234所代表的具体含义.这个时候,选择使用枚举则可以应对该需求。

C语言中的枚举

enum 枚举名称
{
标识符 = 整型常量,
标识符 = 整型常量,
标识符 = 整型常量,
标识符 = 整型常量
};


以”定义一个枚举名称为Test,拥有TestA、TestB等枚举成员的枚举类型”为例,定义方式如下

enum Test
{
TestA = 0,
TestB = 1,
TestC = 2,
TestD = 3
};


OC语言中的枚举

在Objective-C语言中,Apple在iOS6中引入了两个宏来重新定义枚举类型(即:NS_ENUM与NS_OPTIONS),这两者在本质上并没有差别,都是用于定义枚举类型,但是在使用中NS_ENUM多用于一般枚举,而NS_OPTIONS则多用于带有移位运算的枚举

NS_ENUM使用示例

typedef NS_ENUM(NSInteger, Test)
{
TestA = 0,
TestB,
TestC,
TestD
};


NS_OPTIONS使用示例

typedef NS_OPTIONS(NSUInteger, Test) {
TestA = 1 << 0,
TestB = 1 << 1,
TestC = 1 << 2,
TestD = 1 << 3
};


平时在实际开发中,使用NS_ENUM 类型的枚举比较多,使用NS_OPTIONS的枚举比较少,我说明一下两者的区别。

NS_ENUM :这种类型的枚举在使用中,一次只能使用一个枚举值。

NS_OPTIONS:这种类型的枚举一次可以使用多个枚举值,例如:TestA | TestB。在自定义label高度的时候见到这种类型比较多。

CGRect rect = [text boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width - 85 * WIDTH, 0) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:[UIFont fontWithName:@"ArialUnicodeMS" size:17.1]} context:nil];


以后如果有遇到这种业务需求的情况,可以使用这种枚举方式。

本人GitHub地址:https://github.com/wenjing0628
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  小知识点