1、定义一个枚举
// 原始值
enum Season {
case spring, summer, autumn, winter
}
// 关联值
enum Password {
case number(Int, Int, Int, Int)
case gesture(String)
}
2、枚举使用
// 原始值
let season = Season.spring
switch season {
case .spring:
print("春天")
case .summer:
print("夏天")
case .autumn:
print("秋天")
case .winter:
print("冬天")
}
// 关联值
let pw: Password = .number(1, 2, 3, 4)
switch pw {
case let .number(a, b, c, d):
print("数字密码:'\(a)'_'\(b)''\(c)''\(d)'")
case let .gesture(str):
print("手势密码:'\(str)'")
}
3、枚举的内存布局
1)原始值枚举
MemoryLayout.size // 1,实际用到的空间大小
MemoryLayout.alignment // 1,对齐参数
MemoryLayout.stride // 1,分配的空间大小
2)关联值枚举
MemoryLayout.size // 33,实际用到的空间大小
MemoryLayout.alignment // 8,对齐参数
MemoryLayout.stride // 40,分配的空间大小
原始值枚举只需要1个字节用于区分是哪个类型即可;关联值实际上只需要最大枚举类型需要的内存大小,外加一个1字节用于区分枚举类型。再结合内存对齐,最终是对齐参数的倍数。