区别
- 定义区别:
NS_ENUM
用于定义普通的枚举类型,其值通常是互不相关的离散值。它定义的枚举成员是单一的值,一般用于表示一个特定的状态或选项。
NS_OPTIONS
用于定义可以进行按位运算(如或运算 |
)的枚举类型。其枚举成员的值是2的幂次方(1、2、4、8...
),这样可以通过按位或运算组合多个选项。
- 使用场景区别:
NS_ENUM
适用于只有一个选项有效的情况,例如表示方向(上、下、左、右),一次只能是其中一个方向。
NS_OPTIONS
适用于可以同时选择多个选项的情况,比如文件权限(可读、可写、可执行,这些权限可以同时存在)。
代码示例
- NS_ENUM示例:
typedef NS_ENUM(NSUInteger, Direction) {
DirectionUp,
DirectionDown,
DirectionLeft,
DirectionRight
};
// 使用
Direction myDirection = DirectionUp;
- NS_OPTIONS示例:
typedef NS_OPTIONS(NSUInteger, FilePermissions) {
FilePermissionRead = 1 << 0,
FilePermissionWrite = 1 << 1,
FilePermissionExecute = 1 << 2
};
// 使用
FilePermissions myPermissions = FilePermissionRead | FilePermissionWrite;