枚举enum

半城伤御伤魂 提交于 2020-03-24 16:22:00
枚举值:它是一个整形(int) 并且,它不参加内存的占用和释放 枚举定义变量即可直接使用,不用初始化. 枚举的定义如下:
方式一:
typedef enum{  //在这个地方,可以定义相同的名称,给要用到的类型起个标识符,这个地方,是可以省略的
    unknown,       //大括号里面的内容,依据程序员的需要来填充,使用逗号隔开,最后一个可以不使用符号,默认的序号是从0开始的,最好在标记时给它赋值=0
    //如果在中途给它定义了数字,比如unknown=7,则以后的字符的序号依次递增,iPad=8
    iPad,
    iPhone
}TYPES;//枚举的名称,并且使用分号来结束
 
方式二:
enum  名称{
   枚举数据表
};
enum  type{
   
};
 
补充:2015年07月25日
//----------------------------------------------------------------------------------
1、枚举的定义写在哪里?
答:跟在 #import “”后面写,写在类的前面,确保枚举的作用范围
方式三:
1)亦可以如下定义(推荐:结构比较清晰):
格式:typedef NS_ENUM(NSInteger, 名称){};
 
typedef NS_ENUM(NSInteger, Test1) 
{  
    //以下是枚举成员  
    Test1A = 0,  
    Test1B = 1,  
    Test1C = 2,  
    Test1D = 3  
};  
 
2)位运算的方式定义,如下:
等于号后面必须等于1
 
typedef NS_ENUM(NSInteger, Test) 
{  
    TestA       = 1,      //1   1   1  
    TestB       = 1 << 1, //2   2   10      转换成 10进制  2  
    TestC       = 1 << 2, //4   3   100     转换成 10进制  4  
    TestD       = 1 << 3, //8   4   1000    转换成 10进制  8  
    TestE       = 1 << 4  //16  5   10000   转换成 10进制  16  
};  
什么时候要用到这种方式呢?
那就是一个枚举变量可能要代表多个枚举值的时候. 其实给一个枚举变量赋予多个枚举值的时候,原理只是把各个枚举值加起来罢了.
当加起来以后,就获取了一个新的值,那么为了保证这个值的唯一性,这个时候就体现了位运算的重要作用.
位运算可以确保枚举值组合的唯一性.
因为位运算的计算方式是将二进制转换成十进制,也就是说,枚举值里面存取的是 计算后的十进制值.
打个比方:
通过上面的位运算方式设定好枚举以后,打印出来的枚举值分别是: 1 2 4 8 16
这5个数字,无论你如何组合在一起,也不会产生两个同样的数字.
手工的去创建位运算枚举,还有稍微有点花时间的,好在Apple已经为我们准备的uint.所以,用下面这种方式来初始化一个位运算枚举吧:
 
typedef NS_ENUM(uint, Test) 
{  
    TestA,  
    TestB,  
    TestC,  
    TestD,  
    TestE    
};  
多枚举值 赋值方式如下:
Test tes = (TestA|TestB);  
 
判断枚举变量是否包含某个固定的枚举值,使用前需要确保枚举值以及各个组合的唯一性:
//----------------------------------------------------------------------------------
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!