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

转载于:https://www.cnblogs.com/Mr-zyh/p/7453889.html

iOS中的枚举:enum, NS_ENUM, NS_OPTIONS的使用区别相关推荐

  1. IOS中的枚举的写法...

    IOS中的枚举的写法- oc中 typedef enum { XMGTopicTypeAll = 1, XMGTopicTypePicture = 10, XMGTopicTypeWord = 29, ...

  2. C++中的枚举(enum)

    C++中的枚举(enum) 枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合. 枚举是一个数值集合,是给一个值命名的一种方法. 如果想要使用整数来 ...

  3. 枚举enum与#define 宏的区别?

    枚举enum与#define 宏的区别? 1)#define 宏常量是在预编译阶段进行简单替换.枚举常量则是在编译的时候确定其值. 2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量. 3)枚举 ...

  4. iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS

    一般情况下,我们采用C风格的enum关键字可以定义枚举类型. enum{ UIViewAnimationTransitionNone,UIViewAnimationTransitionFlipFrom ...

  5. java如何映射mysql枚举_java中自定义枚举enum映射到mysql数据库字段处理器handler

    mybatis中默认的处理枚举类型的handler有 如果要处理一些特殊的情况下字段内容字段的转换,需要自定义处理器,比如如下例子要处理数据库中默认字段值为""空字符串的问题 im ...

  6. iOS中 static变量与全局、局部变量的区别 !

    static变量与全局.局部变量的区别 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式. 这两者在存储方式上并 ...

  7. iOS 中strong,weak,copy,assign区别

    1:ARC环境下,strong代替retain.weak代替assign 2:weak的作用:在ARC环境下,,所有指向这个对象的weak指针都将被置为nil.这个T特性很有用,相信很多开发者都被指针 ...

  8. iOS中self.xxx 和 _xxx 下划线的区别

    property (nonatomic,copy) NSString *propertyName; self.propertyName 是对属性的拜访: _propertyName 是对部分变量的拜访 ...

  9. java中的枚举_Java中的枚举

    java中的枚举 Enum was introduced in Java 1.5 as a new type whose fields consists of a fixed set of const ...

最新文章

  1. 综述 | 图像去噪方法比较
  2. 浅谈Greenplum的Boolean类型与Text类型之间的转换
  3. java运行按钮在哪里_[tkinter按钮命令已在程序启动时运行
  4. UNIX网络编程——UDP缺乏流量控制(改进版)
  5. 现代IM系统中的消息系统架构 - 模型篇
  6. MySQL主从复制,读写分离配置
  7. .NET Core 2.1 Preview 1发布:更快的构建性能
  8. LeetCode 287. 寻找重复数(BitMap)
  9. 数据结构基础(10) --单链表迭代器的设计与实现
  10. 为什么PHP能够受到大家追捧和喜爱,又为什么饱受嘲讽?
  11. php如何以post形式发送xm并返回xmll数据
  12. U盘、移动硬盘不格式化制作启动盘
  13. 【反编译】apk反编译之修改贴吧发贴回帖时显示的地理位置
  14. txt 文本文档中空格替换
  15. Layim 聊天功能
  16. 2021-07-15 声音一些基本概念
  17. ios(ipad,iphone)屏幕旋转检测通用方法
  18. 20172327 2017-2018-2 《程序设计与数据结构》第十一周学习总结
  19. PHP家长互助的好处,家长互助会的三大促进
  20. 硕士论文理论部分怎么降重

热门文章

  1. 常用的 iptables配置脚本
  2. oracle的globalname后缀,在Oracle 11g下查看数据库的global_name
  3. msgpack php 安装,在ubuntu16.04下编译安装php7的扩张msgpack2.0.1
  4. java中ant是干什么的_java_ant详解
  5. 测试局域网路的MTU最大值
  6. ArcGIS水文分析实战教程(12)河网分级流程
  7. esri-leaflet入门教程(2)-地图的HelloWorld
  8. 计算机二级分省和国家吗,计算机国家二级和省二级有什么区别?
  9. 删除网络信息服务器端,网络安全:手动清除gh0st远控服务端
  10. java 双击触发事件,用RxJava2的方式实现点击事件