枚举值一般是4个字节的int值,在64位系统上是8个字节。
一般定义枚举的时候如下:
枚举一般默认从0开始。
这里输出Father,Mother,Borther,Sister分别是 0、 1、 2、3
位移操作枚举定义如下:
这里位移枚举变量的算法是把后面的每个枚举值相加,将其对应的二进制转化为十进制就是该枚举变量的唯一值。
Father = 0 // 0
Mother = 1 << 0 // 1 1
Brother = 1 << 1 // 1 + 1 = 2(2进制位数) = 10 转化为十进制 2
SisterA = 1 << 2 // 1 + 2 = 3(2进制位数) = 100 转化为十进制 4
SisterB = 1 << 3 // 1 + 3 = 4(2进制位数) = 1000 转化为十进制 8
SisterC = 1 << 4 // 1 + 4 = 5(2进制位数) = 10000 转化为十进制 16
SisterD = 1 << 5 // 1 + 5 = 6(2进制位数) = 100000 转化为十进制 32
这里输出Father,Mother,Borther,SisterA,SisterB,SisterC,SisterD分别是 0、 1、 2、4、8、16、32
在iOS6和Mac OS 10.8以后Apple引入了两个宏来重新定义这两个枚举类型。
关于enum 建议使用 NS_ENUM 和 NS_OPTIONS 宏来定义枚举类型,参见官方的 How to Adopt。
以上两种枚举定义建议更改如下:
NS_OPTIONS一般用来定义位移相关操作的枚举值
下面是苹果官方文档给出的enum更换举例: