位移枚举

位移枚举

一. OC中常见的三种枚举

  1. C语言枚举

     // C语言枚举
     typedef enum : NSUInteger {
         FHDemoTypeA,
         FHDemoTypeB,
         FHDemoTypeC,
     } FHDemoType;
    
  2. OC枚举: 强烈建议大家在日常编程中使用OC枚举

     // OC枚举
     typedef NS_ENUM(NSUInteger, FHNSType) {
         FHNSTypeA,
         FHNSTypeB,
         FHNSTypeC,
     };
    
  3. 位移枚举: 用于多值判断

    • 位移枚举中使用1 << x来设置枚举值

    • 1 << x代表将二进制0001中的1, 向左移动x位

    • 通过按位或: |, 拼接两个枚举值

    • 通过按位与: &, 可以从一个枚举值中取出不同的值

        // 位移枚举
        typedef NS_OPTIONS(NSUInteger, FHActionType) {
            FHActionTypeTop = 1 << 0,
            FHActionTypeBottom = 1 << 1,
            FHActionTypeLeft = 1 << 2,
            FHActionTypeRight = 1 << 3,
        };
         0001
         0010 | 拼接两个值
         ------
         0011
         
         0011
         0010 & 通过一个值, 可以取出两个不同的值
         ------
         0010
         
        - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
            
            // 一般枚举值为0的,代表性能最好的枚举值
            [self demo: FHActionTypeRight | FHActionTypeTop];
        }
        
        - (void)demo:(int)type {
            
            if (type & FHActionTypeTop) {
                NSLog(@"向上--%ld", type & FHActionTypeTop);
            }
            
            if (type & FHActionTypeBottom) {
                NSLog(@"向下--%ld", type & FHActionTypeBottom);
            }
            
            if (type & FHActionTypeLeft) {
                NSLog(@"向左--%ld", type & FHActionTypeLeft);
            }
            
            if (type & FHActionTypeRight) {
                NSLog(@"向右--%ld", type & FHActionTypeRight);
            }
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 『导言』 开发中,我们经常看到很多的位移枚举,一般来说,见到位移枚举,我们都是可以写多个的,用|来隔开,就能识别。...
    随心吧阅读 1,112评论 0 3
  • 『前言』 枚举值是一个整形(int),并且它不参与内存的占用和释放,枚举定义变量即可直接使用,不用初始化.在代码中...
    村雨灬龑阅读 5,444评论 6 28
  • ![Uploading 2B88CA96-A66A-4BE8-AD65-456C8CDB8DF3_547667.p...
    __夏至未至阅读 428评论 4 1
  • 什么是枚举 在程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。如果能在程序中用自然语言...
    Japho阅读 7,665评论 12 25
  • 1.前言 1.什么是位移枚举? 如我们在写代码中经常用过或者是见过的这种写法的枚举 通过 | (位运算符或)进行组...
    SuDream阅读 4,133评论 0 4