iOS/Objective-C開發 枚舉(Enum)的使用

來源:互聯網
上載者:User

在Objective-C語言中,Apple在iOS中引入了兩個宏來重新定義枚舉類型(即:NS_ENUM與NS_OPTIONS),這兩者在本質上並沒有差別,都是用於定義枚舉類型,但是在使用NS_ENUM多用於一般枚舉,而NS_ENUMM多用於一般枚舉,而ES_OPTIONS則多用於帶有移位元運算的枚舉

NS_ENUM使用樣本

typedef NS_ENUM(NSUInteger, Type) {

    TypeNone = 0,

    TypeTime = 1,

    TypeText = 2,

    TypeTimeAndText = 3 

};

NS_OPTIONS使用樣本

typedef NS_OPTIONS(NSUInteger, Test) {

    TestA = 1 << 0,

    TestB = 1 << 1,

    TestC = 1 << 2,

    TestD = 1 << 3

};

帶有移位元運算的枚舉多用於同一個枚舉變數可以同時賦值多個枚舉成員的情況,其原理就是將各個枚舉值按位或(|),因為移位元運算的枚舉成員可以保證按位或(|)計算之後結果的唯一性,所以每種結果都反向計算出是有那幾個枚舉成員按位或(|)而成

以適應按位或(|)為枚舉變數test同時賦值枚舉成員TestA,TestB

Test test = TestA | TestB; 以使用按位異或(^)為枚舉變數test去掉一個枚舉成員TestA

test ^= TestA;

註:如果枚舉變數test本身並未賦值TestA,那麼使用按位異或(^)會為枚舉變數test多賦值一個枚舉成員TestA

以使用按位與(&)判斷枚舉變數test是否賦值了枚舉成員TestA為例

if (test & TestA) {

        NSLog(@"yes");

    }else {

        NSLog(@"no");

    }





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.