iOS开发之枚举用法小结

2020-01-18 16:25:16于海丽

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_OPTIONS(NSUInteger, Test) {
  TestNone = 0,
  TestA = 1 << 0,
  TestB = 1 << 1,
  TestC = 1 << 2,
  TestD = 1 << 3
};

带有移位运算的枚举多用于同一个枚举变量可以同时赋值多个枚举成员的情况,其原理就是将各个枚举值按位或(|),因为移位运算的枚举成员可以保证按位或(|)计算之后结果的唯一性,所以每种结果都能反向计算出是由哪几个枚举成员按位或(|)而成

以"使用按位或(|)为枚举变量test同时赋值枚举成员TestA、TestB与TestC"为例


Test test = TestA | TestB;
test |= TestC;

以"使用按位异或(^)为枚举变量test去掉一个枚举成员TestC"为例


Test test = TestA | TestB | TestC;
test ^= TestC;

注: 如果枚举变量test本身并未赋值TestC,那么使用按位异或(^)会为枚举变量test多赋值一个枚举成员TestC
以"使用按位与(&)判断枚举变量test是否赋值了枚举成员TestA"为例


Test test = TestA | TestB;

if (test & TestA)
{
  NSLog(@"yes");
}
else
{
  NSLog(@"no");
}

总结

以上就是这篇文章的全部内容了,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。


注:相关教程知识阅读请移步到IOS开发频道。