枚舉值一般是4個(gè)字節(jié)的int值诲宇,在64位系統(tǒng)上是8個(gè)字節(jié)。
一般定義枚舉的時(shí)候如下:
枚舉一般默認(rèn)從0開始回梧。
這里輸出Father,Mother,Borther,Sister分別是 0廷粒、 1鸳址、 2、3
位移操作枚舉定義如下:
這里位移枚舉變量的算法是把后面的每個(gè)枚舉值相加,將其對應(yīng)的二進(jìn)制轉(zhuǎn)化為十進(jìn)制就是該枚舉變量的唯一值就乓。
Father ?= ?0 ? ? ? ? ? ? ? // ? 0
Mother = ?1 << 0 ? ? ?// ? ?1 ? ?1
Brother = 1 << ?1 ? ? ?// ? ?1 + 1 = 2(2進(jìn)制位數(shù)) ?= ?10 ? 轉(zhuǎn)化為十進(jìn)制 ? 2
SisterA =? 1 <<? 2? ? //? ? 1 + 2 = 3(2進(jìn)制位數(shù))? =? 100? 轉(zhuǎn)化為十進(jìn)制? 4
SisterB =? 1 <<? 3? ? //? ? 1 + 3 = 4(2進(jìn)制位數(shù))? =? 1000? 轉(zhuǎn)化為十進(jìn)制? 8
SisterC =? 1 <<? 4? ? //? ? 1 + 4 = 5(2進(jìn)制位數(shù))? =? 10000? 轉(zhuǎn)化為十進(jìn)制? 16
SisterD =? 1 <<? 5? ? // ? ?1 + 5 = 6(2進(jìn)制位數(shù))? =? 100000? 轉(zhuǎn)化為十進(jìn)制? 32
這里輸出Father,Mother,Borther,SisterA,SisterB,SisterC,SisterD分別是 0汉匙、 1、 2生蚁、4噩翠、8、16邦投、32
在iOS6和Mac OS 10.8以后Apple引入了兩個(gè)宏來重新定義這兩個(gè)枚舉類型伤锚。
關(guān)于enum 建議使用 NS_ENUM 和 NS_OPTIONS 宏來定義枚舉類型,參見官方的 How to Adopt志衣。
以上兩種枚舉定義建議更改如下:
NS_OPTIONS一般用來定義位移相關(guān)操作的枚舉值
下面是蘋果官方文檔給出的enum更換舉例: