iOS之枚举typedef enum,enum,typedef NS_ENUM.

来源:互联网 发布:网站数据采集系统 编辑:程序博客网 时间:2024/06/06 19:41

今天做项目demo,自己无意间需要用到状态,好几种,所以就开始研究了下枚举,之前枚举自己知道,但是在实战项目中自己还是第一次用,跟大家分享一下,枚举有下边定义方式:

//typedef NS_ENUM(NSUInteger,YAODropVIewState) {

//    YAODropVIewStateWillOpen,

//    YAODropVIewStateDidOpen,

//    YAODropVIewStateWillClose,

//    YAODropVIewStateDidClose,

//};


typedefenum : NSUInteger {

    YAODropVIewStateWillOpen = 100,

    YAODropVIewStateDidOpen,

    YAODropVIewStateWillClose,

    YAODropVIewStateDidClose,

} YAODropVIewState;


枚举类型的值默认都是一些连续的自然数。YAODropVIewStateWillOpen状态为100,那么后边的几个就是101,102,103.

当然了,苹果还给我们提供了下边的这一种写法

typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
    UIViewAutoresizingNone                 = 0,
    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
    UIViewAutoresizingFlexibleWidth        = 1 << 1,
    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
    UIViewAutoresizingFlexibleHeight       = 1 << 4,
    UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};

这是什么?为什么还有位移,先复习下位移:

<< 右移)

<<   带符号左移 (n<<2 将整型值带符号左移2位 ) 

>>   带符号右移 (n>>2 将整型值带符号右移2位 ) 
>>> 无符号右移 (n>>>2 将整型值无符号右移2位 )

<<(左移)

将一个运算符对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)操作数每左移一位,相当于该数乘以2 

例如:2<<2 后,结果为8

此运算符的意思就是把2的二进制位全部左移两位,右边补2个0。2的二进制位10,左移两位后,右边补2个0就是1000。1000转为10进制为8。 
     说到底左移操作就相当于2的2次方×8。 每左移1位次方就增1


>>(右移)


将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。 
操作数每右移一位,相当于该数除以2 

例如:8>>1 后,结果为4

8的二进制为1000,右移1位后,左正数补0,右边丢弃。结果为 0100。转为10进制后为4。

不知道大家注意过没,为什么苹果给我们提供的有些是位移,有些是具体的值,因为是位移的话可以多选啊,但是具体的值就只能单选的啊,一次只能拿一个的。


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{

kTag_FirstButtonClick,

KTag_SecondButtonClick,

KTag_TextField,

}; 

typedef enum 的使用

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

typedef NS_ENUM(NSInteger, UIViewTintAdjustmentMode) {
    UIViewTintAdjustmentModeAutomatic,
    
    UIViewTintAdjustmentModeNormal,
    UIViewTintAdjustmentModeDimmed,
} NS_ENUM_AVAILABLE_IOS(7_0);


Hope To Help You !


技术交流群:141624834 进群请说你看的那篇博客,我们一起探讨成长


0 0
原创粉丝点击