iOS - OC Enum 枚举

简介: 前言iOS 5.0 之后,提供了新的枚举定义方式,定义枚举的同时,可以指定枚举中数据的类型。 typedef NS_OPTIONS(_type, _name) new; -> 位移的,可以使用 按位或 设置数值 typedef NS_ENUM(_type, _name) new; -> 数字的,直接使用枚举设置数值位移型枚举:使用 按位或 可以给一个参数同时设置多个 "类型"。

前言

  • iOS 5.0 之后,提供了新的枚举定义方式,定义枚举的同时,可以指定枚举中数据的类型。

        typedef NS_OPTIONS(_type, _name) new;   -> 位移的,可以使用 按位或 设置数值
        typedef NS_ENUM(_type, _name) new;      -> 数字的,直接使用枚举设置数值
  • 位移型枚举:

    • 使用 按位或 可以给一个参数同时设置多个 "类型"。在具体执行的时候,使用 按位与 可以判断具体的 "类型"。
    • OC 中 64 位操作系统 NSInteger 64 位 - long => 能够表示 64 种选项。通过位移设置,就能够得到非常多的组合。
    • 对于位移枚举类型,如果传入 0,表示什么附加操作都不做!=> 执行效率是最高的。如果开发中,看到位移的枚举,同时不要做任何的附加操作,参数可以直接输入 0!

1、枚举的定义

1.1 C 样式枚举定义

  • 定义枚举类型

        /*
            typedef enum new;
    
            new:枚举类型的变量值列表
    
            C 样式的枚举默认枚举类型变量值的格式为整型
        */
    
        typedef enum {
    
            AA,
            BB,
            CC
    
        } Name;
  • 判断枚举值

        - (void)studentWithName:(Name)name {
    
            switch (name) {
    
                case 0:
    
                    NSLog(@"AA");
                    break;
    
                case 1:
    
                    NSLog(@"BB");
                    break;
    
                case 2:
    
                    NSLog(@"CC");
                    break;
    
                default:
                    break;
            }
        }
  • 设置枚举的值

        [self studentWithName:1];
    
        [self studentWithName:CC];

1.2 数字型枚举定义

  • 定义枚举类型

        /*
            typedef NS_ENUM(_type, _name) new;                      
    
            _type:枚举类型变量值的格式
            _name:枚举类型的名字
            new:枚举类型的变量值列表
        */
    
        typedef NS_ENUM(NSUInteger, Seasons) {
    
            spring = 0,
            summer,
            autumn,
            winter
        };
  • 判断枚举值

        - (void)selectWithSeasons:(Seasons)seasons {
    
            if (seasons == 1 || seasons == 2) {
    
                NSLog(@"comfortable");
    
            } else {
    
                NSLog(@"cold");
            }
        }
  • 设置枚举的值

        [self selectWithSeasons:0];
    
        [self selectWithSeasons:autumn];

1.3 位移型枚举定义

  • 定义枚举类型

        /*
            typedef NS_OPTIONS(_type, _name) new;
    
            _type:枚举类型变量值的格式
            _name:枚举类型的名字
            new:枚举类型的变量值列表
    
            位移的枚举判断不能使用 else,否则会丢选项
        */
    
        typedef NS_OPTIONS(NSUInteger, ActionTypeOptions) {
    
            ActionTypeTop =     1 << 0,
            ActionTypeBottom =  1 << 1,
            ActionTypeLeft =    1 << 2,
            ActionTypeRight =   1 << 3
        };
  • 判断枚举值

        - (void)movedWithActionType:(ActionTypeOptions)type {
    
            if (type == 0) {
                return;
            }
    
            if (type & ActionTypeTop) {
                NSLog(@"上 %li", type & ActionTypeTop);
            }
            if (type & ActionTypeBottom) {
                NSLog(@"下 %li", type & ActionTypeBottom);
            }
            if (type & ActionTypeLeft) {
                NSLog(@"左 %li", type & ActionTypeLeft);
            }
            if (type & ActionTypeRight) {
                NSLog(@"右 %li", type & ActionTypeRight);
            }
        }
  • 设置枚举的值

        [self movedWithActionType:0];
    
        [self movedWithActionType:ActionTypeLeft | ActionTypeTop | ActionTypeBottom | ActionTypeRight];
目录
相关文章
|
Swift iOS开发
iOS OC混编Swift 后者无法走断点
iOS OC混编Swift 后者无法走断点
80 0
|
安全 数据安全/隐私保护 iOS开发
iOS 初探代码混淆(OC)
自己做iOS开发也有几年的时间了,平时做完项目基本就直接打包上传到Appstore上,然后做上架操作了。但是最近,客户方面提出了代码安全的要求。说是要做代码混淆,这方面的工作之前从来没有接触过。然后就上网查了一下,原来有很多应用程序都做了代码混淆。看来是我固步自封了......
iOS 初探代码混淆(OC)
|
存储 Unix 编译器
|
存储 算法 iOS开发
|
Swift iOS开发 容器
iOS 仿支付宝银行卡界面(支持Swift/OC)
在有支付相关的APP中,都有对应的钱包,虽然现在的支付宝,微信支付很流行,但是都是需要绑定自己的银行卡,那么这个银行卡的卡包页面该怎么实现呢?在网上找了许久也没有找到合适的,那就索性自己造轮子。
377 0
|
编解码 Swift iOS开发
iOS 应用之间的跳转(OC&Swift)
iOS 应用之间的跳转(OC&Swift)
1072 0
iOS 应用之间的跳转(OC&Swift)
|
开发工具 Swift iOS开发
iOS 问题 1: OC项目导入swift三方库不兼容问题
iOS 问题 1: OC项目导入swift三方库不兼容问题
1072 0
iOS 问题 1: OC项目导入swift三方库不兼容问题
|
iOS开发
iOS逆向 04:OC反汇编(下)
iOS逆向 04:OC反汇编(下)
284 0
iOS逆向 04:OC反汇编(下)
|
编译器 iOS开发
iOS逆向 04:OC反汇编(上)
iOS逆向 04:OC反汇编(上)
184 0
iOS逆向 04:OC反汇编(上)
|
存储 缓存 编译器
iOS-底层原理 20:OC底层面试解析
iOS-底层原理 20:OC底层面试解析
464 0
iOS-底层原理 20:OC底层面试解析