位移枚举

作者: 面糊 | 来源:发表于2016-06-14 21:30 被阅读267次

位移枚举

一. 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);
            }
        }

相关文章

  • 位移枚举

    位移枚举和普通枚举的区别位移枚举可以传递多个参数,普通的枚举只能传递单个参数 举个?在SDWebimage里有的地...

  • Swift&OC位移枚举区别

    1、Swift 位移枚举写法 2、ObjC位移枚举写法 相比之下ObjC更加简单明了。

  • 位移枚举

    位移枚举 C语言枚举定义 苹果创建枚举的定义方式

  • 位移枚举

    枚举的其中一种方式:位移枚举,直接上代码,看完基本就懂了 写一个方法: 在viewDidLoad方法中调用本方法:

  • 位移枚举

    位移枚举 一. OC中常见的三种枚举 C语言枚举 // C语言枚举 typedef enum : NSUInteg...

  • 位移枚举

  • 位移枚举

    使用场景:同一次操作有多个选项,可以同时多选同时禁用摘取一段定义好的iOS代码 写一个方法,需要选择两种特性来实现...

  • 位移枚举

    //第一种写法typedef enum{DemoTypeTop,DemoTypeBottom,}DemoType;

  • 位移枚举

    ![Uploading 2B88CA96-A66A-4BE8-AD65-456C8CDB8DF3_547667.p...

  • 位移枚举

网友评论

    本文标题:位移枚举

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