OC中的两种枚举解释
来源:互联网 发布:淘宝卖家申请电子面单 编辑:程序博客网 时间:2024/04/30 21:47
下面来简单的解释一下OC里枚举的两种类型.NS_ENUM和NS_OPTIONS本质上是一样的都是枚举.我举个例子.typedef NS_ENUM(NSInteger, UIViewAnimationTransition) { UIViewAnimationTransitionNone, UIViewAnimationTransitionFlipFromLeft, UIViewAnimationTransitionFlipFromRight, UIViewAnimationTransitionCurlUp, UIViewAnimationTransitionCurlDown,};typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) { UIViewAutoresizingNone = 0, UIViewAutoresizingFlexibleLeftMargin = 1 << 0, UIViewAutoresizingFlexibleWidth = 1 << 1, UIViewAutoresizingFlexibleRightMargin = 1 << 2, UIViewAutoresizingFlexibleTopMargin = 1 << 3, UIViewAutoresizingFlexibleHeight = 1 << 4, UIViewAutoresizingFlexibleBottomMargin = 1 << 5};应该可以看出一些苗头.NS_ENUM这种声明出来的东西大部分是单选. NS_OPTIONS声明出来的大部分是多选.像UIViewAnimationTransition这种在用的时候肯定是只能选一种效果,你要么从左翻到右,要么从右翻到左,你做动画的时候总不能同一时刻让他同时从左到右,又从右到左翻,对吧.而UIViewAutosizing就不一样了.我要是让子view的宽高和父View一样,那么autoviewsizing的选项肯定是类似于这种.UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight没错吧,意思就是两个options的我都得选才行.那么如果有个场景让我判断当前的view的Autoresizing有哪几个.我怎么判断呢?很简单.用按位与操作就行了.假设 autoResizings = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin;我们判断autoResizings里是否有UIViewAutoresizingFlexibleLeftMargin的时候只需要if(autoResizings & UIViewAutoresizingFlexibleLeftMargin)是否为true就可以了.用二进制表示的话(这里不用care NSUInteger到底是几位的.就表示这么个意思)UIViewAutoresizingFlexibleLeftMargin = 00000001UIViewAutoresizingFlexibleWidth = 00000010UIViewAutoresizingFlexibleRightMargin = 00000100所以根据上面的表达式,我们的autoResizings = 00000111.那么执行按位与操作是这样的. 00000111&00000001 结果就是00000001,为true.表示含有这个选项.
0 0
- OC中的两种枚举解释
- OC中的枚举
- OC中的枚举
- OC中的枚举类型
- OC中的位移枚举
- oc中的枚举
- OC中的快速枚举器
- OC中的快速枚举与普通遍历
- 穿梭在C/OC/Swift中的枚举
- Python中的__init__()方法整理中(两种解释)
- OC枚举和Swift 枚举
- (java转行oc)什么是block,用java来解释oc中的block
- (java转行oc)什么是block,用java来解释oc中的block
- OC的快速枚举
- OC之【enum枚举】
- OC 快速枚举总结
- oc 枚举的使用
- OC基础:枚举类型
- 测试工具有哪些
- hdu5505 GT and numbers
- VBS代码2
- 顺序查找
- 再谈PostMessage和SendMessage(如何使用 LParam 和 RParam两个参数)
- OC中的两种枚举解释
- C++的重写和隐藏
- AsyncTask使用原则
- alpha测试、beta测试
- HDU 2859 Phalanx(DP)
- HTML/CSS(六) typeof
- 测试原则,测试目标
- ZigZag Conversion
- java socket 编程原理 转