国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

ios用枚舉表示狀態,選項,狀態碼

2019-11-09 16:46:20
字體:
來源:轉載
供稿:網友

枚舉只是一種常量命名方式,入下列枚舉表示鏈接狀態

enum EOCConnectionState:NSInteger{    EOCConnectionStateDisconnected = 1,    EOCConnectionStateConnecting,    EOCConnectionStateConnected,};
編譯器會為每一個枚舉分配一個獨有的編號,從0開始,然而定義沒巨變量的方式卻不太簡潔,如下

enum EOCConnectionState state = EOCConnectionStateConnected;

另一種方式

enum EOCConnectionState{    EOCConnectionStateDisconnected,    EOCConnectionStateConnecting,    EOCConnectionStateConnected,};typedef enum EOCConnectionState EOCConnectionState;這樣使用會簡潔一些

EOCConnectionState state = EOCConnectionStateConnected;c++11標準修訂類枚舉的某些特性,其中一項就是可以指明用何種“底層數據類型”來保存枚舉類型的變量。這樣的好處是,可以向前申明枚舉變量。如下

enum EOCConnectionState:NSInteger{    EOCConnectionStateDisconnected = 1,    EOCConnectionStateConnecting,    EOCConnectionStateConnected,};

上述代碼把EOCConnectionStateDisconnected的值設為1而不是默認分配的0.

還有一種情況應該使用枚舉類型,那就是定義選項的時候,若這些選項可以彼此組合,則更應該如此,和選項之久可以通過“按位或操作符”來組合,例如

enum UIViewAutoresizing{    UIViewAutoresizingNone                 = 0,    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,    UIViewAutoresizingFlexibleWidth        = 1 << 1,    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,    UIViewAutoresizingFlexibleHeight       = 1 << 4,    UIViewAutoresizingFlexibleBottomMargin = 1 << 5};

Foundation框架中定義了一寫輔助的宏,用這些宏來定義枚舉類型時,也可以指定用于保存枚舉值的底層數據類型,這些宏具有向后兼容能力

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};

typedef NS_ENUM(NSUInteger, UIViewAutoresizing) {    EOCConnectionStateDisconnected ,    EOCConnectionStateConnecting,    EOCConnectionStateConnected,};

從枚舉定義來看,NS_ENUM和NS_OPTIONS本質是一樣的,僅僅從字面上來區分其用途。NS_ENUM是通用情況,NS_OPTIONS一般用來定義具有位移操作或特點的情況。

注:我們總習慣在switch語句中加上default分支,然而,若是枚舉來定義狀態機,最好不要有default分支,這樣的話,如果稍后又加了一種狀態,那么編譯器就會發出浸膏信息,提示新加入的狀態并未在switch分支中處理


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扎赉特旗| 团风县| 乐安县| 增城市| 水富县| 荥经县| 高台县| 淮北市| 光山县| 伽师县| 锡林郭勒盟| 江华| 嘉义县| 商丘市| 临颍县| 长泰县| 缙云县| 南开区| 井冈山市| 满城县| 铅山县| 长寿区| 察隅县| 马边| 类乌齐县| 柳江县| 杭锦旗| 固阳县| 育儿| 寿光市| 瓮安县| 隆尧县| 肇州县| 松江区| 榆树市| 建平县| 大厂| 古蔺县| 宁波市| 黄梅县| 福鼎市|