iOS枚举值的应用

枚举:规范的定义代码中的状态、状态码、选项。

强调内容枚举和宏(#define)非常相似:宏在预处理阶段将名称替换成对应值,枚举在编译阶段将名称替换成对应的值。可以将枚举理解成编译阶段的宏。

由C引入:

 //格式:
 enum typeName(valueName1,valueName2,valueName3,...);

 enum:关键字,专用于定于枚举类型。
 typeName:枚举类型的名称。
 valueName1,valueName2,..:每个值对应的名称的列表。

如:

 enum Season{
    Spring,
    Summer,
    Autumn,
    Winter
 };

定义中只给出了名称,没有给出名称对应的值,因为枚举值默认从0开始,往后依次递增1。也可以自己定义值。
如:

 enum Season{
    Spring = 0,
    Summer = 1,
    Autumn = 2,
    Winter = 3
 };

枚举是一种类型,可以定义枚举变量:

  • 声明的同时定义变量:
enum Season{
    Spring = 0,
    Summer = 1,
    Autumn = 2,
    Winter = 3
 }a,b,c;
  • 直接定义变量:
enum Season a,b,c;

通过typedef可以为枚举类型设置起一个”别名”,这样可以像其他数据类型一样使用枚举值来定义变量。

 typedef enum{
    TestA,
    TestB,
    TestC
 } Test;

 typedef enum _Test{
    TestA,
    TestB,
    TestC
 } Test;

使用别名后,便可以根据类型定义枚举变量:

 Test test = TestB;

Object-C中的枚举:
在Object-C中,iOS6引入了两个宏来重新定义枚举类型:NS_ENUM、NS_OPTIONS。两者本质上没有差别,都是用于定义枚举类型,但前者NS_ENUM用于定义一般枚举,后者NS_OPTIONS用于带有移位运算的枚举,用于一个枚举变量可以同时赋值多个枚举值的情况。

 typedef NS_ENUM(NSInteger , Season) {
    Spring,
    Summer,
    Autumn,
    Winter
 };
 typedef NS_OPTIONS(NSUInteger, Options) {
    Aoptions = 1,
    Boptions = 1 << 1 ,
    Coptions = 1 << 2
 };

使用NS_OPTIONS定义枚举值的时候,一个枚举变量可以同时赋值多个枚举值,原理是把各个枚举值加起来。加起来以后,就获取了一个新的值,因为每个枚举值都是使用的位运算符,所以都是唯一性,根据得到的值可以反推出各枚举值,位运算可以确保枚举值的唯一性。
判断枚举变量是否包含某个固定的枚举值:

Options option = Aoptions|Boptions;
 if (Aoptions & option) {
    NSLog(@"有");
 }else{
    NSLog(@"没有");
 }

 if (option & Boptions) {
    NSLog(@"有");
 }else{
    NSLog(@"没有");
 }

 if (option & Coptions) {
    NSLog(@"有");
 }else{
    NSLog(@"没有");
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值