位移枚举

// ViewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController


@end

// ViewController.m
#import "ViewController.h"

//经典C语言风格的枚举
typedef enum : NSUInteger {
    XMGTypeTop,
    XMGTypeBottom,
} XMGType;

//OC风格的枚举
typedef NS_ENUM(NSUInteger,XMGDemoType) {
    XMGDemoTypeTop,
    XMGDemoTypeBottom,
};

//位移枚举
//如果发现位移枚举的第一个枚举值!=0,那么你可以默认传0,表示性能最高
typedef NS_OPTIONS(NSUInteger, XMGActionType) {
    XMGActionTypeTop = 1 << 0, //1
    XMGActionTypeBottom = 1 << 1,
    XMGActionTypeLeft = 1 << 2,
    XMGActionTypeRight = 1 << 3,
};


@interface ViewController ()

@end

@implementation ViewController

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [self demo:XMGActionTypeTop | XMGActionTypeBottom | XMGActionTypeLeft | XMGActionTypeRight];
}


//传多个参数 3个
//| 0|1 = 1 0|0 = 0 1|1 = 1  只要有1那么结果就是1
//& 0&1 = 0 0&0 = 0 1&1 = 1  只要有0那么结果就是0
-(void)demo:(XMGActionType)type
{
    NSLog(@"%zd",type);

    if (type & XMGActionTypeTop) {
        NSLog(@"向上---%zd",type & XMGActionTypeTop);
    }

    if (type & XMGActionTypeBottom) {
        NSLog(@"向下---%zd",type & XMGActionTypeBottom);
    }

    if (type & XMGActionTypeRight) {
        NSLog(@"向右---%zd",type & XMGActionTypeRight);
    }

    if (type & XMGActionTypeLeft) {
        NSLog(@"向左---%zd",type & XMGActionTypeLeft);
    }


}
@end


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 『导言』 开发中,我们经常看到很多的位移枚举,一般来说,见到位移枚举,我们都是可以写多个的,用|来隔开,就能识别。...
    随心吧阅读 4,765评论 0 3
  • 枚举的三种实现方式 第一种枚举 第二种枚举定义类型 ** 第三种枚举** 位移枚举在这感谢下原文作者[天狐博客]|...
    lyonLiu阅读 5,818评论 1 7
  • 位移枚举 C语言枚举定义 苹果创建枚举的定义方式
    Dayu大鱼阅读 949评论 0 0
  • Z了个L阅读 1,534评论 0 1
  • 单身也好,恋爱也罢,都只是人生中的某个阶段。没必要羡慕旁人,也别对现状抱不满。无论身边是否有人陪伴,前方是否有承诺...
    鬼谷阳阅读 1,280评论 0 0