枚舉是C語言中的一種基本數據類型,是一個"被命名的整型常量"的集合,它不參與內存的占用和釋放,我們在開發中使用枚舉的目的只有一個,那就是為了增加代碼的可讀性
舉個例子,我們想要在開發中根據四季的變化做不同的操作,我們首先想到的可能會是定義一個int型變量,通過為該變量賦不同的值來表示四季(e.g. 1為春天,2為夏天,3為秋天,4為冬天).但是,對于閱讀該份代碼的人來講,他們并不能在短時間內就明白數字1234所代表的具體含義.這個時候,選擇使用枚舉則可以應對該需求。
OC語言中的枚舉
在Objective-C語言中,Apple在iOS6中引入了兩個宏來重新定義枚舉類型(即:NS_ENUM與NS_OPTIONS),這兩者在本質上并沒有差別,都是用于定義枚舉類型,但是在使用中NS_ENUM多用于一般枚舉,而NS_OPTIONS則多用于帶有移位運算的枚舉
NS_ENUM使用示例
typedef NS_ENUM(NSInteger, Test)
{
TestA = 0,
TestB,
TestC,
TestD
};
NS_OPTIONS使用示例
typedef NS_OPTIONS(NSUInteger, Test) {
TestA = 1 << 0,
TestB = 1 << 1,
TestC = 1 << 2,
TestD = 1 << 3
};
對于一般的枚舉,要獲取枚舉的最大值是很難的,因為隨著枚舉的擴充,最大值在不斷變化,這時推薦使用一個固定的枚舉表示最大值,例如:
typedef NS_ENUM(NSUInteger, TMEnumTest)
{
TMEnumTestOne,
TMEnumTestTwo,
TMEnumTestMax,? // 表示最大值
};
(personal think) 1.枚舉是用文字化的數據類型來描述一組分類區別的數字。