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会报错!



  • 相关阅读:
    云计算安全概述
    快照技术
    存储可靠性技术之--备份
    存储可靠性技术之 --RAID
    存储方式
    存储技术
    CentOS安装setup
    CentOS7安装iptables防火墙
    CentOS 7.0下使用yum安装MySQL
    The APR based Apache Tomcat Native library
  • 原文地址:https://www.cnblogs.com/Mr-zyh/p/7453889.html
Copyright © 2011-2022 走看看