今天做项目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{
kTag_FirstButtonClick,
KTag_SecondButtonClick,
KTag_TextField,
};
typedef enum 的使用
typedef
typedef NS_ENUM(NSInteger, UIViewTintAdjustmentMode) {
UIViewTintAdjustmentModeAutomatic,
UIViewTintAdjustmentModeNormal,
UIViewTintAdjustmentModeDimmed,
} NS_ENUM_AVAILABLE_IOS(7_0);
Hope To Help You !
技术交流群:141624834 进群请说你看的那篇博客,我们一起探讨成长