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

首頁 > 系統(tǒng) > iOS > 正文

ios用枚舉表示狀態(tài),選項,狀態(tài)碼

2019-11-09 17:47:33
字體:
供稿:網(wǎng)友

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

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標準修訂類枚舉的某些特性,其中一項就是可以指明用何種“底層數(shù)據(jù)類型”來保存枚舉類型的變量。這樣的好處是,可以向前申明枚舉變量。如下

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

上述代碼把EOCConnectionStateDisconnected的值設(shè)為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框架中定義了一寫輔助的宏,用這些宏來定義枚舉類型時,也可以指定用于保存枚舉值的底層數(shù)據(jù)類型,這些宏具有向后兼容能力

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本質(zhì)是一樣的,僅僅從字面上來區(qū)分其用途。NS_ENUM是通用情況,NS_OPTIONS一般用來定義具有位移操作或特點的情況。

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 绿春县| SHOW| 扶余县| 靖远县| 绥滨县| 临江市| 榆社县| 米林县| 方城县| 精河县| 耒阳市| 腾冲县| 博乐市| 吴旗县| 阿巴嘎旗| 清新县| 渭南市| 崇仁县| 宝山区| 德安县| 根河市| 得荣县| 灌南县| 繁峙县| 汝州市| 都安| 庆云县| 陕西省| 涟水县| 徐汇区| 卫辉市| 如东县| 军事| 北碚区| 什邡市| 黄山市| 两当县| 望都县| 长沙市| 横山县| 海林市|