iOS-OC-枚举的三种写法

1.第一种写法

typedef enum
{
    WpfPageTypeTop,

    WpfPageTypeBottom,

}WpfPageType;

2.第二种枚举,定义类型

typedef NS_ENUM(NSInteger,WpfPageType)

{
    WpfPageTypeTop,

    WpfPageTypeBottom,
};

3.第三种枚举 ,位移枚举

//一个参数可以传递多个值 ,如果枚举使用了位运算那么就可以使用并运算

//如果是位移枚举,观察第一个枚举值,如果该枚举值!=0 那么可以默认传0做参数,如果传0做参数,那么效率最高

typedef NS_OPTIONS(NSInteger, WpfPageActionType)
{
    WpfPageActionTypeTop = 1<<0, //1*2(0) =1  1左移0位

    WpfPageActionTypeBottom = 1<<1,//1*2(1)=2  1左移1位

    WpfPageActionTypeLeft = 1<<2,//1*2(2)=4    1左移2位

    WpfPageActionTypeRight = 1<<3,//8          1左移3位
};

二.位移枚举的使用

- (void)viewDidLoad {
    [super viewDidLoad];
    // 只要枚举中有位运算就可以使用并运算|
    // 为什么?
    [_textField addTarget:self action:@selector(textBegin) forControlEvents:UIControlEventEditingDidBegin | UIControlEventEditingChanged];
    
    //textBegin 内部的实现原理
    [self test:c | b];
}
 
- (void)test:(int)value
{
    // 解析value,判断下是否包含a,b,c,d
    // &:解析有没有包含a,b,c,d
//    NSLog(@"%d %d %d %d",value & a,value & b,value & c,value & d);
    if (value & a) NSLog(@"包含了a");
    if (value & b) NSLog(@"包含了b");
    if (value & c) NSLog(@"包含了c");
    if (value & d) NSLog(@"包含了d");
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容