iOS - OC Enum 枚举
前言
iOS 5.0 之后,提供了新的枚举定义方式,定义枚举的同时,可以指定枚举中数据的类型。
typedef NS_OPTIONS(_type, _name) new; -> 位移的,可以使用 按位或 设置数值
typedef NS_ENUM(_type, _name) new; -> 数字的,直接使用枚举设置数值
位移型枚举:
- 使用 按位或 可以给一个参数同时设置多个 "类型"。在具体执行的时候,使用 按位与 可以判断具体的 "类型"。
- OC 中 64 位操作系统 NSInteger 64 位 - long => 能够表示 64 种选项。通过位移设置,就能够得到非常多的组合。
- 对于位移枚举类型,如果传入 0,表示什么附加操作都不做!=> 执行效率是最高的。如果开发中,看到位移的枚举,同时不要做任何的附加操作,参数可以直接输入 0!
1、枚举的定义
1.1 C 样式枚举定义
定义枚举类型
/*
typedef enum new;
new:枚举类型的变量值列表
C 样式的枚举默认枚举类型变量值的格式为整型
*/
typedef enum {
AA,
BB,
CC
} Name;
判断枚举值
- (void)studentWithName:(Name)name {
switch (name) {
case 0:
NSLog(@"AA");
break;
case 1:
NSLog(@"BB");
break;
case 2:
NSLog(@"CC");
break;
default:
break;
}
}
设置枚举的值
[self studentWithName:1];
[self studentWithName:CC];
1.2 数字型枚举定义
定义枚举类型
/*
typedef NS_ENUM(_type, _name) new;
_type:枚举类型变量值的格式
_name:枚举类型的名字
new:枚举类型的变量值列表
*/
typedef NS_ENUM(NSUInteger, Seasons) {
spring = 0,
summer,
autumn,
winter
};
判断枚举值
- (void)selectWithSeasons:(Seasons)seasons {
if (seasons == 1 || seasons == 2) {
NSLog(@"comfortable");
} else {
NSLog(@"cold");
}
}
设置枚举的值
[self selectWithSeasons:0];
[self selectWithSeasons:autumn];
1.3 位移型枚举定义
定义枚举类型
/*
typedef NS_OPTIONS(_type, _name) new;
_type:枚举类型变量值的格式
_name:枚举类型的名字
new:枚举类型的变量值列表
位移的枚举判断不能使用 else,否则会丢选项
*/
typedef NS_OPTIONS(NSUInteger, ActionTypeOptions) {
ActionTypeTop = 1 << 0,
ActionTypeBottom = 1 << 1,
ActionTypeLeft = 1 << 2,
ActionTypeRight = 1 << 3
};
判断枚举值
- (void)movedWithActionType:(ActionTypeOptions)type {
if (type == 0) {
return;
}
if (type & ActionTypeTop) {
NSLog(@"上 %li", type & ActionTypeTop);
}
if (type & ActionTypeBottom) {
NSLog(@"下 %li", type & ActionTypeBottom);
}
if (type & ActionTypeLeft) {
NSLog(@"左 %li", type & ActionTypeLeft);
}
if (type & ActionTypeRight) {
NSLog(@"右 %li", type & ActionTypeRight);
}
}
设置枚举的值
[self movedWithActionType:0];
[self movedWithActionType:ActionTypeLeft | ActionTypeTop | ActionTypeBottom | ActionTypeRight];
iOS - OC Enum 枚举的更多相关文章
- iOS - Swift Enum 枚举
1.Enum 的创建 1.1 标准定义 枚举的定义 enum CompassPoint { case North case South case East case West } enum Plane ...
- iOS - OC Foundation 框架
前言 框架是由许多类.方法.函数和文档按照一定的逻辑组织起来的集合,以使研发程序更容易. Foundation 框架:为所有程序开发奠定基础的框架称为 Foundation 框架. Cocoa :是指 ...
- Swift Enum 枚举
前言 枚举是一种自定义的数据类型,在 Swift 中枚举类型拥有相当高的自由度.在 Swift 语言中枚举是一级类型,它拥有在其他语言中只有类才拥有的一些特性,比如实例方法,实例构造器等. 枚举声明的 ...
- c# (ENUM)枚举组合类型的谷歌序列化Protobuf
c# (ENUM)枚举组合类型的谷歌序列化Protobuf,必须在序列化/反序列化时加上下面: RuntimeTypeModel.Default[typeof(Alarm)].EnumPassthru ...
- C#将Enum枚举映射到文本字符串
介绍 当将以前的C代码移植到C#中时,我快发疯了,因为有很多的数组需要将常量映射到字符串.当我在寻找一个C#的方法来完成的时候,我发现了一个自定义属性和映射的方法. 如何使用代码? 对每一个enum枚 ...
- MVC3不能正确识别JSON中的Enum枚举值
一.背景 在MVC3项目里,如果Action的参数中有Enum枚举作为对象属性的话,使用POST方法提交过来的JSON数据中的枚举值却无法正确被识别对应的枚举值. 二.Demo演示 为了说明问题,我使 ...
- 161208、Java enum 枚举还可以这么用
在大部分编程语言中,枚举类型都会是一种常用而又必不可少的数据类型,Java中当然也不会例外.然而,Java中的Enum枚举类型却有着许多你意想不到的用法,下面让我们一起来看看. 先来看一段代码示例: ...
- iOS - OC 面向对象语法
1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...
- Python中模拟enum枚举类型的5种方法分享
这篇文章主要介绍了Python中模拟enum枚举类型的5种方法分享,本文直接给出实现代码,需要的朋友可以参考下 以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码代码如下: # way1 ...
随机推荐
- MAVEN修改localRepository不起作用
MAVEN修改localRepository不起作用 环境:win10 改用其他盘符都可以,唯独C:\Users\Administrator\.m2\repository不起作用,应该是win10权限 ...
- 通过Oracle数据库访问控制功能的方法(Database access control)
修改sqlnet.ora文件中的IP列表后都需要重启监听才能生效.(原文是: Any changes to the values requires the TNS listener to be sto ...
- shell小细节
1.使用变量的时候无需首先声明其类型 2 cut 剪切数据 3.sed 定址 4.read 读取文件(管道) 5 expr 整值计算 6 lp 打印
- Java可变长参数方法调用问题
不说废话,直接上代码: package mytest; import java.util.List; public class TestClass { public void method(List& ...
- 【转】利用xcode生成的app生成可以在iphone和itouch上运行的ipa安装包
转载地址:http://blog.csdn.net/yohunl/article/details/5971252 在编译好的真机版目录下的.app文件,至于生成真机可以运行的app的方法,有两种方式, ...
- Andriod 按钮代码
package com.example.test1; import android.support.v7.app.ActionBarActivity; import android.os.Bundle ...
- 第十二届浙江省大学生程序设计大赛-Lunch Time 分类: 比赛 2015-06-26 14:30 5人阅读 评论(0) 收藏
Lunch Time Time Limit: 2 Seconds Memory Limit: 65536 KB The 999th Zhejiang Provincial Collegiate Pro ...
- Uva 1626,括号序列
题目链接:https://uva.onlinejudge.org/external/16/1626.pdf 题意: 给定一个字符串,看是否括号匹配,不匹配加括号,加最少的括号使得匹配.输出该结果. 分 ...
- HDU(3605),二分图多重匹配
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3605 Escape Time Limit: 4000/2000 MS (Java/Others) ...
- Entity Framework 第四篇 优化SQL查询
Expression<Func<TEntity, bool>>与Func<TEntity, bool>的异同 public IList<TEntity> ...