zoukankan      html  css  js  c++  java
  • iOS中的枚举:enum, NS_ENUM, NS_OPTIONS的使用区别

    1.enum可以声明一般类型和位掩码(bitmasked)类型

    例如:

    enum Test{// 一般枚举

         TestA,

         TestB,

         TestC,

    };

    enum{// 匿名枚举

         TestA,

         TestB,

         TestC,

    };

    typedef enum _Test{ // 设置别名

         TestA,

         TestB,

         TestC

    } Test;

    2.NS_ENUM声明一般类型, NS_OPTIONS声明掩码(bitmasked)类型

    typedef NS_ENUM(NSInteger, Test)
    {
        TestA,
        TestB,
        TestC
    };
    typedef NS_OPTIONS(NSUInteger, Test) {// <<标识左位移,(1<<1,意思是把左边的1转换成二进制后向左移动1位)
        TestA = 1 << 0,
        TestB = 1 << 1,
        TestC = 1 << 2,
        TestD = 1 << 3
    };
     

    3.那么问题又来了, 直接用enum不就可以了? 答案不是这样的, 苹果建议我们在OC中使用NS_ENUMNS_OPTIONS, 为什么呢? 因为他们除了推断出不同类型的枚举,再就是当编译Objective-C++模式,它们产生的代码是不同的, 就是因为不同所以混编的时候使用enum会报错!



  • 相关阅读:
    解析HTTP协议六种请求方法
    金蝶
    普元
    中间件
    [CTSC2008] 网络管理
    【Uva 10498】满意值
    【SPOJ839】最优标号
    bzoj2879 [Noi2012]美食节
    bzoj3144 [Hnoi2013]切糕
    bzoj3112 [Zjoi2013]防守战线
  • 原文地址:https://www.cnblogs.com/Mr-zyh/p/7453889.html
Copyright © 2011-2022 走看看