OC——52個(gè)有效方法:5.用枚舉(enum)表示狀態(tài)、選項(xiàng)、狀態(tài)碼

enum 枚舉是一種常量的命名方式,命名出來(lái)的代碼易讀懂。編譯器會(huì)為枚舉分配一個(gè)獨(dú)有的編號(hào),從 0 開(kāi)始,每個(gè)枚舉會(huì)遞增1。

1、表示狀態(tài)

定義語(yǔ)法:

enum CDState{

CDStateON,

CDStateOFF,

};

不過(guò)這每次調(diào)用的時(shí)候就比較凡繁瑣:

enum CDStatestate = CDStateON;

可使用 typedef 關(guān)鍵字來(lái)重新定義枚舉類(lèi)型

定義語(yǔ)法:

enum CDState{

CDStateON,

CDStateOFF,

};

typedef enum CDState CDCDState;

重命名后,就可以使用 CDCDState 來(lái)代替定義枚舉的繁瑣類(lèi)型

CDCDState state = CDStateOFF;

定義枚舉的時(shí)候可以定義底層變量的類(lèi)型,可手動(dòng)指定某個(gè)枚舉成員的值,其后面的枚舉就會(huì)順勢(shì)遞增1。

enumCDState:NSInteger{

CDStateON =2,

CDStateOFF,

};

2、表示選項(xiàng)

定義選項(xiàng)的時(shí)候,這些選項(xiàng)可以彼此組合。各選項(xiàng)之間可通過(guò)“按位或”來(lái)組合。例如:

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

};

每個(gè)選項(xiàng)都可以啟用或禁用,使用按位或可組合多個(gè)選項(xiàng)。例如:

UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight

如下圖展示枚舉值二進(jìn)制:

枚舉值二進(jìn)制表示,按位或操作后的二進(jìn)制值

3、表示狀態(tài)

可以把邏輯含義相似的一組狀態(tài)碼放在同一個(gè)枚舉集里面表示。

通常習(xí)慣在 switch 語(yǔ)句中添加 default 。如果使用枚舉定義狀態(tài),最好不要使用 default ,否則會(huì)認(rèn)為在后面又添加了一種狀態(tài),編譯器會(huì)發(fā)出警告信息,提示新加入的狀態(tài)未在 switch 分支中處理。假如再添加default ,就會(huì)處理這個(gè)新的狀態(tài)。從而導(dǎo)致編譯器不發(fā)警告信息。通常要確保 switch 語(yǔ)句能正確處理所有樣式。

在 Switch 語(yǔ)句里,如何定義

總結(jié)

1、使用枚舉表示狀態(tài)機(jī)的狀態(tài)、傳遞給方法的選項(xiàng)和狀態(tài)碼等值,并起易懂的名字。

2、若把傳遞給某個(gè)方法的選項(xiàng)表示為枚舉類(lèi)型。多個(gè)選項(xiàng)可以同時(shí)使用,可以將選項(xiàng)值定義為2的冪,方便通過(guò)按位或操作將其組合起來(lái)。

3、使用 NS_ENUM 和 NS_OPTIONS 宏來(lái)定義枚舉類(lèi)型,并指明其底層數(shù)據(jù)類(lèi)型。確保是開(kāi)發(fā)者所選的底層數(shù)據(jù)類(lèi)型,而不是采用編譯器所選的類(lèi)型

4、處理枚舉類(lèi)型的 switch 語(yǔ)句中不要實(shí)現(xiàn) default 分支。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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