iOS 枚举类型学习

一,两者的用法

枚举类型定义用关键字enum标识,形式为: 
enum 标识符 
{

枚举数据表

};
枚举数据(枚举常量)是一些特定的标识符,标识符代表什么含义,完全由程序员决定。数据枚举的顺序规定了枚举数据的序号,从0开始,依次递增。
enum status
{

copy,

delete

};
枚举类型status仅有两个数据,一个是copy,一个是delete,序号为0、1,代表复制与删除。
enum status
{

copy=6,

delete

};
则copy的序号为6,delete的序号为7。
      enum用来定义一系列宏定义常量区别用,相当于一系列的#define xx xx,当然它后面的标识符也可当作一个类型标识符;typedef  enum则是用来定义一个数据类型,那么该类型的变量值只能在enum定义的范围内取。两者在这点上是没有差别的。

二,一些说明

用enum定义的类型,只能在它的值域范围内取。比如:

#include "stdafx.h"

enum led_type
{
     led_off = 0,
     led_half = 127,
     led_on = 255,
};

void crake(led_type xx)
{
     printf("%d /n",xx);
}
int _tmain()
{
     crake(0);
     crake(22);
     crake(333);

return 0;
}

编译时程序都会报错:error C2664: ‘crake‘ : cannot convert parameter 1 from ‘int‘ to ‘led_type‘。尽管enum的类型值仍然是整形,但并不意味着它可以接受范围外的整型数。(关于此问题,在Linux中,由别人验证是可以编译通过的。因为两者的C编译法则有差别)

enum和enum typedef 在IOS中的使用

第一、typedef的使用

C语言里typedef的解释是用来声明新的类型名来代替已有的类型名,typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)

如:typedef  char gender;

gender a;与char a;语句相同。

第二 、enum的使用

enum是枚举类型, enum用来定义一系列宏定义常量区别用,相当于一系列的#define xx xx,当然它后面的标识符也可当作一个类型标识符。

如:

enum AlertTableSections

{

kUIAction_Simple_Section = 1,

kUIAction_OKCancel_Section,

kUIAction_Custom_Section,

kUIAlert_Simple_Section,

kUIAlert_OKCancel_Section,

kUIAlert_Custom_Section,

};

kUIAction_OKCancel_Section的值为2.

第三、typedef enum 的使用

typedef  enum则是用来定义一个数据类型,那么该类型的变量值只能在enum定义的范围内取。

typedef enum {

UIButtonTypeCustom = 0,           // no button type

UIButtonTypeRoundedRect,          // rounded rect, flat white button, like in address card

UIButtonTypeDetailDisclosure,

UIButtonTypeInfoLight,

UIButtonTypeInfoDark,

UIButtonTypeContactAdd,

} UIButtonType;

UIButtonType表示一个类别,它的值只能是UIButtonTypeCustom....

在了解enum和typedef enum的区别之前先应该明白typedef的用法和意义。

C语言里typedef的解释是用来声明新的类型名来代替已有的类姓名,例如:

typedef int   CHANGE;

指定了用CHANGE代表int类型,CHANGE代表int,那么:

int a,b;和CHANGE a,b;是等价的、一样的。

方便了个人习惯,熟悉的人用CHANGE来定义int。

typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。

而enum是枚举类型,有了typedef的理解容易看出,typedef  enum定义了枚举类型,类型变量取值在enum{}范围内取,在使用中二者无差别。

enum AlertTableSections

{

kUIAction_Simple_Section = 0,

kUIAction_OKCancel_Section,

kUIAction_Custom_Section,

kUIAlert_Simple_Section,

kUIAlert_OKCancel_Section,

kUIAlert_Custom_Section,

};

typedef enum {

UIButtonTypeCustom = 0,           // no button type

UIButtonTypeRoundedRect,          // rounded rect, flat white button, like in address card

UIButtonTypeDetailDisclosure,

UIButtonTypeInfoLight,

UIButtonTypeInfoDark,

UIButtonTypeContactAdd,

} UIButtonType;

看上面两个例子更好理解,下面的是UIButton的API,UIButtonType指定的按钮的类型,清楚名了,上面的直接调用enum里的元素就可以了。

时间: 2024-10-28 09:48:10

iOS 枚举类型学习的相关文章

iOS - 枚举类型 enum,NS_ENUM,NS_OPTIONS

一般情况下,我们采用C风格的enum关键字可以定义枚举类型. enum{ UIViewAnimationTransitionNone, UIViewAnimationTransitionFlipFromLeft, UIViewAnimationTransitionFlipFromRight, UIViewAnimationTransitionCurlUp, UIViewAnimationTransitionCurlDown, } UIViewAnimationTransition; //位移操作

java枚举类型学习

用的不多,但用的时候仅仅简单的使用,不太明白原理,今天就系统的学一下枚举.参考:java编程思想. 1.简单创建 枚举就是一个固定的集合,内容是声明的类. package com.test.java.tenum; /** * 一个简单的enum实例 * Created by Administrator on 2016/3/30. */ public enum SimpleEnumUse { NOT,MILD,MEDIUM,HOT,FLAMING } class TestSE{ public st

《iOS应用逆向工程》学习笔记(四)iOS程序类型

越狱iOS中最常见的程序有Application, Dynamic Library和Daemon三类. 1.Application 除了传统意义上的App外,越狱iOS平台上还有两种App形式的存在:WeeApp(依附于NotificationCenter的App)和PreferenceBundle(依附于Settings的App),常见于Cydia平台. 普通App的bundle中存放的是可执行程序和所需资源,而framework的bundle中存放的是动态链接库. 主要关注App中的三个部分

iOS/object-c: 枚举类型 enum,NS_ENUM,NS_OPTIONS

一般情况下,我们采用C风格的enum关键字可以定义枚举类型. [cpp] view plaincopy enum{ UIViewAnimationTransitionNone, UIViewAnimationTransitionFlipFromLeft, UIViewAnimationTransitionFlipFromRight, UIViewAnimationTransitionCurlUp, UIViewAnimationTransitionCurlDown, } UIViewAnimat

学习的枚举类型,结构以及初步了解数组

今天首先总结了前面学习的顺序结构,分支结构,循环结构和跳转语句. 然后就开始了新课的内容:枚举类型,结构和数组. 枚举类型:enum(关键字)  自定义名字(枚举类型自定义取的名字){ } 举例写下:显示QQ的三种状态和交通灯的三种颜色 namespace _015枚举 { enum QQ { //int i online=1234567, //0 offline, //1 hidden//2 } enum TraffLight:long { red, yellow, green } class

我的java学习笔记(11)关于装箱、参数可变方法和枚举类型

1.所有的基本类型都有一个与之对应的类,通常这些类称之为包装器. 2.对象包装器类是不可变的,即一旦构造了包装器,就不允许更改包装在其中的值.对象包装器还是final,因此不能定义它们的子类. 3.假设定义一个整型数组列表,而尖括号中的类型参数不允许是基本类型,即不允许ArrayList<int>,这里可以使用Integer对象包装器类. Array<Integer> l = new ArrayList<>(); 4.装箱和拆箱是编译器认可的,而不是虚拟机.编译器在生成

iOS开发——swift篇&amp;经典语法(十六)枚举类型

枚举类型 枚举定义了一个常用的具有相关性的一组数据,并在你的代码中以一个安全的方式使用它们. 如果你熟悉C语言,你就会知道,C语言中的枚举指定相关名称为一组整数值.在Swift中枚举更为灵活,不必为枚举的每个成员提供一个值.如果一个值(被称为“原始”的值)被提供给每个枚举成员,则该值可以是一个字符串,一个字符,或者任何整数或浮点类型的值. 另外,枚举成员可以指定任何类型,每个成员都可以存储的不同的相关值,就像其他语言中使用集合或变体.你还可以定义一组通用的相关成员为一个枚举,每一种都有不同的一组

Java枚举类型深度学习(二)

Enum类构造函数 Enum类中通常应该包括特定的枚举对象,对这些枚举对象加上一些描述可以很方便.这样就可以使用枚举的构造函数,用于描述枚举对象的具体特征.通常构造函数为私有的,这也很正常,因为枚举类本身就不容修改.可以使用toString()覆盖原有方法,对该枚举对象进行自定义描述. 代码演示 package date0818.demo1; /** * 枚举类型可以有构造函数 * @author zzw922cn * */ public enum Education { //注意,枚举类型中间

C#学习笔记(隐式和显式转化、枚举类型、结构类型、数组类型和字符串)

1 类型转换 1.1 隐式转换:从类型A到类型B的转换可以在所有情况下进行,执行转换的规则非常简单,可以让编译器执行转换. ushort destinationVar; char sourceVar = 'a'; destinationVar = sourceVar; Console.WirteLine("soueceVar Val:{0}",sourceVar); Console.wirteLine("destination Val:{0}",destinatio