OC 枚舉NS_ENUM

用到枚舉的時候,發(fā)現(xiàn)都忘的差不多了哭,先回頭看一下C語音枚舉的用法:
https://www.cnblogs.com/JCSU/articles/1299051.html

一、C語言枚舉語法

有以下幾種寫法:
1,單純定義一種新的數(shù)據(jù)類型——枚舉

enum DAY {
      MON=1, TUE, WED, THU, FRI, SAT, SUN
};
//1,枚舉型是一個集合,集合中的元素(枚舉成員)是一些命名的整型常量,元素間逗號隔開
//2, DAY 是一個標(biāo)識符,可以看成這個集合的名字,可以省略
//3,第一個枚舉成員默認(rèn)值 0 ,后續(xù)枚舉成員的值在前一個成員上 +1
//4,可以人為設(shè)定枚舉成員的值,從而自定義某個范圍的整數(shù)
//5,枚舉型是預(yù)處理指令 #define 的替代
//6,類型定義以分號;結(jié)束

2,枚舉變量的聲明(使用枚舉類型對變量進行聲明,不開辟內(nèi)存;具體定義變量時才開辟內(nèi)存)
(1)單純枚舉變量的聲明

char a; //變量a的類型為字符型char
char letter;
int x;
int y,z;
//同理,枚舉型
enum DAY yesterday; //變量yesterday,today的類型為枚舉型enum DAY
enum DAY today;

(2)枚舉類型定義和變量聲明同時進行:

enum Day   //此處DAY可以省略
{
  Saturday,
  Sunday = 0,
  Monday,
  Tuesday,
  Wednesday,
  Thursday,
  Friday
} workday; //變量workday的類型為枚舉型enum DAY

enum week { Mon = 1, Tue, Wen, The, Fri, Sat, Sun} days; //變量days的類型為枚舉型enum week

enum BOOLEAN {false, true} end_flag, match_flag;

(3)用typedef關(guān)鍵字將枚舉類型定義成別名,并用別名進行變量聲明

typedef enum workday  //此處workday可以省略不寫
{
  Saturday,
  Sunday = 0,
  Monday,
  Tuesday,
  Wednesday,
  Thursday,
  Friday
} workday;  //此處的workday是enum workday的別名

workday today, tomorrow;

注意:
同一個程序中不能定義同名的枚舉類型
不同的枚舉類型中,也不能存在同名的命名常量

3,使用枚舉類型的變量

//使用枚舉類型聲明變量,再對枚舉類型變量進行賦值
enum workday yesterday, today, tomorrow;
yesterday = Monday;
today = Tuesday;
tomorrow = Wednesday;
//聲明變量的同時進行賦值
enum workday yesterday = Monday,today = Tuesday,tomorrow = Wednesday;
//定義類型的同時聲明變量,然后對變量賦值
enum Day
{
  Saturday,
  Sunday = 0,
  Monday,
  Tuesday,
  Wednesday,
  Thursday,
  Friday
} workday1, workday2, workday3; 

void main ()
{
  workday1 = Monday;
  workday2 = Tuesday;
  workday3 = Wednesday;
  printf("%d %d %d \n", workday1, workday2, workday3); //輸出:1 2 3
}

二、OC枚舉語法

封裝成了NS_ENUM(...) 及 NS_OPTIONS(...)
從枚舉定義來看,NS_ENUM和NS_OPTIONS本質(zhì)是一樣的,僅僅從字面上來區(qū)分其用途。NS_ENUM是通用情況,NS_OPTIONS一般用來定義具有位移操作或特點的情況(bitmask)。

//NS_ENUM可以在使用typedef的同時,確定枚舉的底層數(shù)據(jù)類型
//具體發(fā)展過程見 http://www.itdecent.cn/p/994dc9f4958d
//第一個參數(shù)是存儲新類型的類型,第二個參數(shù)是起的別名
typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
    UIViewAnimationTransitionNone,//第一個默認(rèn)為0,之后默認(rèn) = 前一個的值+1
    UIViewAnimationTransitionFlipFromLeft,
    UIViewAnimationTransitionFlipFromRight,
    UIViewAnimationTransitionCurlUp,
    UIViewAnimationTransitionCurlDown,
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容