iOS 知识点iOS日常

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

2017-09-01  本文已影响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枚举方面的问题欢迎大家和我交流,共同进步,谢谢各位。

上一篇下一篇

猜你喜欢

热点阅读