位移枚舉

位移枚舉

一. 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,102評論 0 3
  • 『前言』 枚舉值是一個整形(int),并且它不參與內存的占用和釋放,枚舉定義變量即可直接使用,不用初始化.在代碼中...
    村雨灬龑閱讀 5,443評論 6 28
  • ![Uploading 2B88CA96-A66A-4BE8-AD65-456C8CDB8DF3_547667.p...
    __夏至未至閱讀 427評論 4 1
  • 什么是枚舉 在程序設計語言中,一般用一個數值來代表某一狀態,這種處理方法不直觀,易讀性差。如果能在程序中用自然語言...
    Japho閱讀 7,658評論 12 25
  • 1.前言 1.什么是位移枚舉? 如我們在寫代碼中經常用過或者是見過的這種寫法的枚舉 通過 | (位運算符或)進行組...
    SuDream閱讀 4,113評論 0 4