美文网首页iOS 知识点iOS日常
iOS枚举——位移枚举的简单使用

iOS枚举——位移枚举的简单使用

作者: 听海听心 | 来源:发表于2017-09-01 17:49 被阅读130次

    今天和大家一起来学习一下iOS位移枚举的简单使用,有疏忽的地方,还望各位不吝赐教。


    一、枚举的作用

    在代码中使用枚举目的是为了增加代码的可读性。

    二、枚举的实现方式

    1、实现方式

    // 第一种实现方式 C语言实现枚举的方式
    typedef enum {
    
        GHTypeUp,
        GHTypeDown,
        
    }GHType;
    
    // 第二种实现方式  OC实现枚举的方式
    typedef NS_ENUM(NSUInteger, GHDemoType) {
    
        GHDemoTypeUp,
        GHDemoTypeDown
    };
    
    /**
    * 第三种方式,位移枚举 ,OC实现枚举的方式
    * 优点:一个参数可以传递多个值
    * 说明:如果是位移枚举,观察第一个枚举值。如果该枚举值=0 那么默认传递0座位参数,如果传递0,效率最高
    */
    typedef NS_OPTIONS(NSUInteger, GHOpertionType) {
    
        GHOpertionTypeUp = 1<<0,
        GHOpertionTypeDown = 1<<1,
        GHOpertionTypeLeft = 1<<2,
        GHOpertionTypeRight = 1<<3
    
    };
    

    2、举个栗子

       // 方法调用
      [self demo:GHOpertionTypeUp | GHOpertionTypeDown | GHOpertionTypeLeft | GHOpertionTypeRight];
      // 如果是位移枚举,观察第一个枚举值。如果该枚举值=0 那么默认传递0座位参数,如果传递0,效率最高
      [self demo:0];
    
    // 方法实现
    - (void)demo:(GHOpertionType)type{
    
        if (type & GHOpertionTypeUp) {
            NSLog(@"GHOpertionTypeUp");
        }
        
        if (type & GHOpertionTypeDown) {
            NSLog(@"GHOpertionTypeDown");
        }
        
        if (type & GHOpertionTypeLeft) {
            NSLog(@"GHOpertionTypeLeft");
        }
        
        if (type & GHOpertionTypeRight) {
            NSLog(@"GHOpertionTypeRight");
        }
        
    }
    

    3、位移枚举的解释

    /**
    *  准备:首先你要知道这些知识。
    *
    *  1、<< 是左移运算符 : 用来将一个数的各二进制位全部左移若干位。
    *        举个栗子  :0000 0001 代表 二进制中的 1 
    *        左移一位    <<1
    *        就会变成  :0000 0010 代表 二进制中的 2
    *        简便算法:8 << n的值为8*(2^n)
    *
    *  2、按位与运算 :&  1 & 1 = 1  1 & 0 = 0   0 & 0 = 0
    *        总结规则:有0则为0
    *
    *  3、按位或运算: |   1 | 1= 1  1 | 0 = 1  0 | 0= 0       
    *        总结规则: 有1则为1
    *
    *  以上可以推导出:
    *  GHOpertionTypeUp :     0000 0001 
    *  GHOpertionTypeDown :   0000 0010 
    *  GHOpertionTypeLeft :   0000 0100
    *  GHOpertionTypeRight :  0000 1000 
    *  依据3的知识可以得到以上按位或运算后的结果为 : 0000 1111
    *  依据2的知识当此值和GHOpertionTypeUp进行按位与运算时得到的结果为 : 0000 0001 即得到了GHOpertionTypeUp本身,以此类推
    *  综上所述可以解释位移枚举为什么可以一个参数可以传递多个值
    */
    
    

    写在最后的话:关于枚举的知识今天就分享到这里,关于iOS枚举方面的问题欢迎大家和我交流,共同进步,谢谢各位。

    相关文章

      网友评论

      本文标题: iOS枚举——位移枚举的简单使用

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