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_ENUM
与NS_OPTIONS
, 为什么呢? 因为他们除了推断出不同类型的枚举,再就是当编译Objective-C++
模式,它们产生的代码是不同的, 就是因为不同所以混编的时候使用enum
会报错!
转载于:https://www.cnblogs.com/Mr-zyh/p/7453889.html
iOS中的枚举:enum, NS_ENUM, NS_OPTIONS的使用区别相关推荐
- IOS中的枚举的写法...
IOS中的枚举的写法- oc中 typedef enum { XMGTopicTypeAll = 1, XMGTopicTypePicture = 10, XMGTopicTypeWord = 29, ...
- C++中的枚举(enum)
C++中的枚举(enum) 枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合. 枚举是一个数值集合,是给一个值命名的一种方法. 如果想要使用整数来 ...
- 枚举enum与#define 宏的区别?
枚举enum与#define 宏的区别? 1)#define 宏常量是在预编译阶段进行简单替换.枚举常量则是在编译的时候确定其值. 2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量. 3)枚举 ...
- iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS
一般情况下,我们采用C风格的enum关键字可以定义枚举类型. enum{ UIViewAnimationTransitionNone,UIViewAnimationTransitionFlipFrom ...
- java如何映射mysql枚举_java中自定义枚举enum映射到mysql数据库字段处理器handler
mybatis中默认的处理枚举类型的handler有 如果要处理一些特殊的情况下字段内容字段的转换,需要自定义处理器,比如如下例子要处理数据库中默认字段值为""空字符串的问题 im ...
- iOS中 static变量与全局、局部变量的区别 !
static变量与全局.局部变量的区别 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式. 这两者在存储方式上并 ...
- iOS 中strong,weak,copy,assign区别
1:ARC环境下,strong代替retain.weak代替assign 2:weak的作用:在ARC环境下,,所有指向这个对象的weak指针都将被置为nil.这个T特性很有用,相信很多开发者都被指针 ...
- iOS中self.xxx 和 _xxx 下划线的区别
property (nonatomic,copy) NSString *propertyName; self.propertyName 是对属性的拜访: _propertyName 是对部分变量的拜访 ...
- java中的枚举_Java中的枚举
java中的枚举 Enum was introduced in Java 1.5 as a new type whose fields consists of a fixed set of const ...
最新文章
- 综述 | 图像去噪方法比较
- 浅谈Greenplum的Boolean类型与Text类型之间的转换
- java运行按钮在哪里_[tkinter按钮命令已在程序启动时运行
- UNIX网络编程——UDP缺乏流量控制(改进版)
- 现代IM系统中的消息系统架构 - 模型篇
- MySQL主从复制,读写分离配置
- .NET Core 2.1 Preview 1发布:更快的构建性能
- LeetCode 287. 寻找重复数(BitMap)
- 数据结构基础(10) --单链表迭代器的设计与实现
- 为什么PHP能够受到大家追捧和喜爱,又为什么饱受嘲讽?
- php如何以post形式发送xm并返回xmll数据
- U盘、移动硬盘不格式化制作启动盘
- 【反编译】apk反编译之修改贴吧发贴回帖时显示的地理位置
- txt 文本文档中空格替换
- Layim 聊天功能
- 2021-07-15 声音一些基本概念
- ios(ipad,iphone)屏幕旋转检测通用方法
- 20172327 2017-2018-2 《程序设计与数据结构》第十一周学习总结
- PHP家长互助的好处,家长互助会的三大促进
- 硕士论文理论部分怎么降重
热门文章
- 常用的 iptables配置脚本
- oracle的globalname后缀,在Oracle 11g下查看数据库的global_name
- msgpack php 安装,在ubuntu16.04下编译安装php7的扩张msgpack2.0.1
- java中ant是干什么的_java_ant详解
- 测试局域网路的MTU最大值
- ArcGIS水文分析实战教程(12)河网分级流程
- esri-leaflet入门教程(2)-地图的HelloWorld
- 计算机二级分省和国家吗,计算机国家二级和省二级有什么区别?
- 删除网络信息服务器端,网络安全:手动清除gh0st远控服务端
- java 双击触发事件,用RxJava2的方式实现点击事件