OC——52個有效方法:5.用枚舉(enum)表示狀態、選項、狀態碼

enum 枚舉是一種常量的命名方式,命名出來的代碼易讀懂。編譯器會為枚舉分配一個獨有的編號,從 0 開始,每個枚舉會遞增1。

1、表示狀態

定義語法:

enum CDState{

CDStateON,

CDStateOFF,

};

不過這每次調用的時候就比較凡繁瑣:

enum CDStatestate = CDStateON;

可使用 typedef 關鍵字來重新定義枚舉類型

定義語法:

enum CDState{

CDStateON,

CDStateOFF,

};

typedef enum CDState CDCDState;

重命名后,就可以使用 CDCDState 來代替定義枚舉的繁瑣類型

CDCDState state = CDStateOFF;

定義枚舉的時候可以定義底層變量的類型,可手動指定某個枚舉成員的值,其后面的枚舉就會順勢遞增1。

enumCDState:NSInteger{

CDStateON =2,

CDStateOFF,

};

2、表示選項

定義選項的時候,這些選項可以彼此組合。各選項之間可通過“按位或”來組合。例如:

typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {

UIViewAutoresizingNone? ? ? ? ? ? ? ? = 0,

UIViewAutoresizingFlexibleLeftMargin? = 1 << 0,

UIViewAutoresizingFlexibleWidth? ? ? ? = 1 << 1,

UIViewAutoresizingFlexibleRightMargin? = 1 << 2,

UIViewAutoresizingFlexibleTopMargin? ? = 1 << 3,

UIViewAutoresizingFlexibleHeight? ? ? = 1 << 4,

UIViewAutoresizingFlexibleBottomMargin = 1 << 5

};

每個選項都可以啟用或禁用,使用按位或可組合多個選項。例如:

UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight

如下圖展示枚舉值二進制:

枚舉值二進制表示,按位或操作后的二進制值

3、表示狀態

可以把邏輯含義相似的一組狀態碼放在同一個枚舉集里面表示。

通常習慣在 switch 語句中添加 default 。如果使用枚舉定義狀態,最好不要使用 default ,否則會認為在后面又添加了一種狀態,編譯器會發出警告信息,提示新加入的狀態未在 switch 分支中處理。假如再添加default ,就會處理這個新的狀態。從而導致編譯器不發警告信息。通常要確保 switch 語句能正確處理所有樣式。

在 Switch 語句里,如何定義

總結

1、使用枚舉表示狀態機的狀態、傳遞給方法的選項和狀態碼等值,并起易懂的名字。

2、若把傳遞給某個方法的選項表示為枚舉類型。多個選項可以同時使用,可以將選項值定義為2的冪,方便通過按位或操作將其組合起來。

3、使用 NS_ENUM 和 NS_OPTIONS 宏來定義枚舉類型,并指明其底層數據類型。確保是開發者所選的底層數據類型,而不是采用編譯器所選的類型

4、處理枚舉類型的 switch 語句中不要實現 default 分支。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容