
提示: 这篇博文主要介绍了Foundation框架中一些类的使用方法,都是以代码方式展示的,可能会比较乱,但都是些常用的方法,这些方法常用自然就会记住所以不用纠结,注意主要记方法的第一个单词,单词不认识的话可以记前三个字母,再配合提示查找
------------------------------------------------------------------------------------------------------------------
NSURL简介
什么是URL?
URL的全称是Uniform Resource Locator(统一资源定位符) URL是互联网上标准资源的地址 互联网上的每个资源都有一个唯一的URL,它包含的信息指出资源的位置 根据一个URL就能找到唯一的一个资源
URL的格式?
基本URL包含协议、主机域名(服务器名称\ip地址)、路径
可以简单认为: URL == 协议头://主机域名/路径
例如:http://www.baidu.com/123.jpg
常见的URL协议头(URL类型)
http\https :超文本传输协议资源, 网络资源
在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更 加安全。
Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。http 的连接很简单,是无状态的
https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全
ftp :文件传输协议
// NSURL OC提供了一个URL处理的一个类
// http
// https 加密
// ftp://
// file:// 本地文件
// NSURL 写入文件
// 1)通过 URLWithString 构建一个NSURL
// URLWithString 可以构建本地路径的URL
// 可以构建路径,调用手机系统的程序
// 打电话
NSURL *url = [NSURL URLWithString:@"tel://10086"];
// 发短信
NSURL *url = [NSURL URLWithString:@"sms://10086"];
// 保存文件到本地
NSURL *url = [NSURL URLWithString:@"file://地址"];
// 将字符串写入本地
NSString *str = @"xxxxx";
BOOL isOk = [str writeToURL:<#(NSURL *)#> atomically:<#(BOOL)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];
// 第一个参数文件路径 第二个参数是否利用原子性 第三个编码标准NSUTF8StringEncoding 最后一个错误信息
// 一般写入文件都要进行判断是否写入成功
NSError *error;
if (isOk) {
NSLog(@"写入成功");
} else {
NSLog(@"%@",&error);
}
NSURL的一些用法
NSString
// 快速创建字符串
NSString *str = @"xxxx";
// 字符串写入文本
BOOL isOk = [str writeToFile:@"/User/Apple/Desktop/1.tex" atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSString *str1 = @"abc"; // a 97
NSString *str2 = @"abc"; // A 65
//取出每个字符的ASCII码值 ,比较ASCII码值大小
//compare方法比较大小
//compare 默认的区分大小写的
//compare 这个函数,不能增加条件
// NSComparisonResult result = [str1 compare:str2];
//比较的时候,不区分大小写,参考字符的个数
NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];
//
switch (result) {
case NSOrderedAscending:
NSLog(@"str1 < str2 升序");
break;
case NSOrderedDescending:
NSLog(@"str1 > str2 降序");
break;
case NSOrderedSame:
NSLog(@"str1 == str2 ");
break;
default:
break;
}
//地址的比较
// "==" 不能够判断字符串是否相等的
//判断字符串内容真正是否相等,使用是
//isEqualToString:
//注意:他是区分大小写的
if ([str1 isEqualToString:str3]) {
NSLog(@"相等");
}else{
NSLog(@"不相等");
}
/*
检测字符串的前缀和后缀
*/
NSString *url = @"https://www.baidu.com";
//如何检测这个字符串是否是一个网址
//http:// https://
// 检测一个字符串的前缀是否以 http:// 开头 或者 https:// 开头
// [str hasprefix:@"要检测的内容"];
if([url hasPRefix:@"http://"]||[url hasPrefix:@"https://"]){
NSLog(@"是一个网址");
}else{
NSLog(@"这不是一个网址");
}
//检测字符串的后缀
// xxxx.jpg 判断 字符串的后缀是否是".jpg"
// xxxx.png
// xxxx.jpeg
// xxxx.gif
NSString *imgName = @"xxxxx.doc";
// [str hasSuffix:@"带检测的后缀"]
if([imgName hasSuffix:@".jpg"]||[imgName hasSuffix:@".png"]||[imgName hasSuffix:@".jpeg"]||[imgName hasSuffix:@".gif"]){
NSLog(@"是一个图片");
}else{
NSLog(@"这不是一个图片");
}
//字符串的查找
// 查找某个字符串在另外一个字符串中首次出现的位置
// 0123456789
//1 @"asdaiosffsdafiosasdfsffitcastasdfasd"
//2 @"ios"
// 4 3
// 1 rangOfString 2
NSString *str1 =@"asdaiosffsdafiosasdfsffitcastasdfasd";
NSString *str2 =@"cjk";
// 字符串查找
// 查找2 在 1中首次出现的位置
// 如果查找到了,返回2在1中的位置和长度
// 如果查找不到,返回的信息:
// location 特别大的数(NSNotFound) 最大的long类型的数
// length 0
// range 结构体变量 NSRange 结构别名
NSRange range = [str1 rangeOfString:str2];
//判断是否查找到了
if(range.location!=NSNotFound){
//range.location 表示字符串首次出现的位置
//range.length 字符串出现的长度(实质上就是子字符串的长度)
NSLog(@"%lu,%lu",range.location,range.length);
}else{
NSLog(@"在%@中没有找到这个字符串%@",str1,str2);
}
// 字符串的截取
NSString *str = @"http://www.baidu.com";
//1) 从xx位置开始,到最后结束(包含xx这个位置的字符)
NSString *str1 = [str substringFromIndex:5];
NSLog(@"str1 = %@",str1);
//2) 从开始位置,到xx位置结束(不包含xx这个位置)
NSString *str2 = [str substringToIndex:5];
NSLog(@"str2 = %@",str2);
//3) 截取一个范围 range
NSRange r1 = {3,4};
NSString *str3 = [str substringWithRange:r1];
NSLog(@"str3 = %@",str3);
//字符串的替换
// @"asdfsdafasdfdasdfsa" ----> a 替换成 "*"
// @" asdfasfd asdfsadf asdf asdfas asdf asdf asdfa"
NSString *str =@"asdfsdafasdfdasdfsa";
// str stringByReplacingOccurrencesOfString:@"源字符串中的内容" withString:@"要替换成新的内容"
//把a替换成 *
NSString *newStr = [str stringByReplacingOccurrencesOfString:@"a" withString:@"*"];
NSLog(@"newStr = %@",newStr);
// 把空格给去掉
str =@" asdfasfd asdfsadf asdf asdfas asdf asdf asdfa";
newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"newStr = %@",newStr);
// 字符串转各种数值
NSString *str = @"11";
int a = [str intValue];
NSString *str1 = @"12.21";
double b = [str1 doubleValue];
NSString *str2 = @"12.12f";
float c = [str2 floatValue];
//OC的字符串和 C的字符串互相转换问题
// char* NSString
//1) C---->OC对象
char *s = "zhangsanfeng";
printf("%s\n",s);
//思路:创建一个OC的字符串对象,用C语言的字符串创建
NSString *str = [NSString stringWithUTF8String:s];
NSLog(@"str = %@",str);
//2) OC对象 --> C的字符串
NSString *str2 = @"zbz";
// 把str2 转 C的字符串
const char *s1 = [str2 UTF8String];
printf("s1 = %s\n",s1);
NSString的一些用法
NSRange
// NSRange的定义
typedef struct _NSRange {
NSUInteger location; // 位置
NSUInteger length; // 从该位置算起的长度
} NSRange;
NSMutableString
// 可变的字符串
NSMutableString *str2 = [NSMutableString stringWithFormat:@"Jack"];
// 在Jack后面加上&Rose
[str2 appendString:@"&Rose"];
NSMutableString *str = [NSMutableString string];
//1) appendFormat 格式化的添加字符串
[str appendFormat:@"http://www.baidu.com/%d",100];
//str http://www.baidu.com/100
NSLog(@"%@",str);
//2) 删除字符串一部分内容
[str deleteCharactersInRange:NSMakeRange(3, 4)];
NSLog(@"%@",str);
//3) 插入一个字符串
[str insertString:@"p://" atIndex:3];
NSLog(@"%@",str);
//4) 替换字符串的一部分内容
[str replaceCharactersInRange:NSMakeRange(11, 5) withString:@"xxxxx"];
NSLog(@"%@",str);
// 注意不能这么写
NSMutableString *str = @"abc";
NSMutableString的一些用法
NSArray
//NSArray特点:
// 一旦创建成功,内容不可改变
// 只能存放OC对象
// 1)创建一个空数组
NSArray *arr1 = [NSArray array];
// 2)创建数组,只有一个元素
NSArray *arr2 = [NSArray arrayWithObject:@"1"];
// 3)创建数组,有多个元素
// nil 表示数组赋值结束
// 常见写法
NSArray *arr3 = [NSArray arrayWithObjects:@"one",@"two",@1, nil];
NSLog(@"arr3 = %@",arr3);
// 4)调用对象方法,创建数组
// nil Nil NULL NSNULL
NSArray *arr4 = [[NSArray alloc] initWithObjects:@"three",[NSNull null],@"four", nil];
NSLog(@"arr4 = %@",arr4);
// 5)用一个数组可以创建另外一个数组
NSArray *arr5 = [NSArray arrayWithArray:arr3];
NSLog(@"arr5 = %@",arr5);
// 用简化的方式,来定义和访问数组元素
//1)用简化的方式,定义数组
//格式: @[ 数组元素 ]
NSArray *arr = @[@"1",@"one",@"3",@4,@"ONE"];
// 数组的常见的方法
NSArray *arr3 = [NSArray arrayWithObjects:@"one",@"two",@1,@"three", nil];
NSLog(@"arr3 = %@",arr3);
// 1)获取数组的长度 count获取数组的元素的个数
NSLog(@"%ld",arr3.count);
// 2)根据下标,获取下标对应的对象
NSLog(@"%@",[arr3 objectAtIndex:3]);
// 3)返回元素的下标
NSUInteger loc = [arr3 indexOfObject:@"three"];
NSLog(@"%ld",loc);
// 4)数组中是否包含了某个元素
if([arr3 containsObject:@"four"]){
NSLog(@"包含此元素");
}else{
NSLog(@"不包含");
}
// 定义一个数组
NSArray *arr = @[@"one",@"two",@"three",@"four"];
// 对数组进行遍历
//1) 普通的方式,通过下标访问
for (int i=0; i<arr.count; i++) {
NSLog(@"-> %@",arr[i]);
}
//2) 快速枚举法 for循环的增强形式
for (NSString * str in arr) {
NSLog(@"---> %@",str);
}
//3) 使用block的方式,进行访问
// 数组元素 元素下标 是否停止
//stop:YES 会停止, stop:NO 不会停止
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if(idx == 2){
*stop = YES; //停止 // break;
}else{
NSLog(@"idx = %ld,obj = %@",idx,obj);
}
}];
// 定义一个数组
NSArray *arr = @[@1,@2,@3,@4];
// 1)把数组中的元素用 "-" 连接起来
// [数组 componentsJoinedByString @"分隔符"];
// 1-2-3-4
NSString *str = [arr componentsJoinedByString:@"-"];
NSLog(@"str = %@",str);
//2) 给一个字符串,分割成一个数组
// 400-800-12580 //取得 400 12580 800
NSString *str2 = @"400-800-12580";
NSArray *arr2 = [str2 componentsSeparatedByString:@"-"];
NSLog(@"%@",[arr2 firstObject]);
NSLog(@"%@",[arr2 lastObject]);
NSLog(@"%@",arr2[1]);
str2 = @"400-800-12580#400-888-11200";
NSArray *arr3 = [str2 componentsSeparatedByString:@"#"];
NSLog(@"arr3 = %@",arr3);
// 第一个电话的每一部分
NSArray *arr4 = [[arr3 firstObject] componentsSeparatedByString:@"-"];
NSLog(@"arr4 = %@",arr4);
NSArray *arr5 = [[arr3 lastObject] componentsSeparatedByString:@"-"];
NSLog(@"arr5 = %@",arr5);
NSArray的一些用法
NSMutableArray
// 数组的使用
// 1)创建数组
// i. 空数组
NSMutableArray *arr1 = [NSMutableArray array];
NSLog(@"%p",arr1);
// ii.创建的时候初始化一个元素
NSMutableArray *arr2 = [NSMutableArray arrayWithObject:@"one"];
// iii.创建数组的时候,初始化多个元素
NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"one",@"two",@3,nil];
// IV . 创建一个数组,并且指定长度,
NSMutableArray *arr4 = [NSMutableArray arrayWithCapacity:5];
//2) 添加元素
[arr1 addObject:@"fengjie"];
NSLog(@"%p",arr1);
//插入元素到指定的位置
[arr1 insertObject:@"zbz" atIndex:0];
//3) 删除元素
// 根据对象内容删除
[arr1 removeObject:@"zbz"];
// 根据位置删除
[arr1 removeObjectAtIndex:1];
// 全部删除
[arr1 removeAllObjects];
//4) 修改元素
// two --> four
[arr3 replaceObjectAtIndex:1 withObject:@"four"];
// four --> five
// 更加简单地方法
arr3[1] = @"five";
NSLog(@"%@",arr3);
// 5) 查找元素
BOOL isSearch = [arr3 containsObject:@"four"];
NSLog(@"%d",isSearch);
//6) 交换元素
// 1 2 3 4 5
// 5 2 3 4 1
//temp = a[0];
//a[0] = a[len-1];
//a[len-1] = temp;
NSMutableArray *arr5 =[NSMutableArray arrayWithObjects:@1,@2,@3,@4,@5, nil];
// 可以交换数组元素
[arr5 exchangeObjectAtIndex:0 withObjectAtIndex:4];
NSLog(@"%@",arr5);
NSMutableArray的一些用法
NSDictionary
// NSDictionary 不可变的,一旦创建,内容就不能添加\删除(不能改动)
// 1)创建空字典
NSDictionary *dict1 = [NSDictionary dictionary];
// key value
// zs ---> 张三
// ls ---> 李四
// 2) 创建只有一组键值对的字典
NSDictionary *dict2 = [NSDictionary dictionaryWithObject:@"zhangsan" forKey:@"zs"];
// 3)创建多组键值对的字典
// value值,key值
NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"k1",@"value2",@"k2", nil];
// 注意;
// 字典的key值和value值,都必须是对象
// 4)快速创建一个字典
// @{,,key值:value值,,,};
// key值不能重复:
// 如果重复了,也不会报错
// 如果重复了,最后添加的将不能够保存到字典中
NSDictionary *dict4 = @{@"zs":@"zhaosi",@"zs":@"zhangsan",@"ls":@"lisi",@"bz":@"banzhang"};
NSLog(@"%@",dict4); // 以%@格式打印字典,控制台输出一个{ }
// 5)获取字典的长度
NSLog(@"%lu",dict4.count);
// 6)根据key值取出value值
// zs zhaosi
// key
NSString *str = [dict4 objectForKey:@"zs"];
NSLog(@"str = %@",str);
//7) 字典的遍历问题
// 第一步:获取所有的key
// 第二步:根据key获取value
// for(NSString *key in dict4){
// NSLog(@"key = %@,value = %@",key,[dict4 objectForKey:key]);
// }
// key value stop
[dict4 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@ --> %@",key,obj);
}];
NSDictionary的一些用法
NSMutableDictionary
// 1)可变字典的创建
NSMutableDictionary *dict1 = [NSMutableDictionary dictionary]; // 创建空字典
NSMutableDictionary *dict2 = [NSMutableDictionary dictionaryWithCapacity:3];
// 2)给可变字典添加键值对
[dict1 setValue:@"zhaosi" forKey:@"ls"];// 因为key值重复了,所以添加不上
[dict1 setValue:@"lisi" forKey:@"ls"]; // ls
[dict1 setValue:@"liuneng" forKey:@"ln"];
NSLog(@"%@",dict1);
//3) 删除
// [dict1 removeObjectForKey:@"ls"];
// [dict1 removeAllObjects];
NSLog(@"%@",dict1);
// 4)修改
//
[dict1 setObject:@"zhaosi" forKey:@"ls"];
// 简写形式
dict1[@"ls"] = @"xxxxx";
NSLog(@"%@",dict1);
// 5)查找
// 获取所有的key值
NSArray *arr = [dict1 allKeys];
if([arr containsObject:@"ls"]){
NSLog(@"存在ls的key");
}
}
NSMutableDictionary的一些用法
NSFileManager
//NSFileManager 用于判断
NSString *filePath = @"/Users/apple/Desktop/arr.plist";
NSString *filePath2 = @"/";
// 1) 判断文件是否存在
//创建文件管理对象
//调用defaultManager 创建一个文件管理的单例对象
//单例对象:在程序运行期间,只有一个对象存在
NSFileManager *fm = [NSFileManager defaultManager];
// YES 存在 NO 不存在
BOOL isYES = [fm fileExistsAtPath:filePath];
NSLog(@"-->%d",isYES);
if(isYES){
BOOL isDir;
// 2) 判断是否是一个目录
[fm fileExistsAtPath:filePath isDirectory:&isDir];
if (isDir) {
NSLog(@"这是一个目录");
}else{
NSLog(@"这不是一个目录");
}
}
// 3) 判断文件是否可读
isYES = [fm isReadableFileAtPath:filePath];
// 4) 是否可写
isYES = [fm isWritableFileAtPath:filePath2];
// 5) 是否可删除
isYES = [fm isDeletableFileAtPath:filePath2];
NSLog(@"-->%d",isYES);
//创建文件对象
NSFileManager *fm = [NSFileManager defaultManager];
NSString *filePath = @"/Users/apple/Desktop/arr.plist";
NSString *dirPath = @"/Users/apple/Desktop/a";
//1)如何获取文件的信息(属性)
NSDictionary *dict = [fm attributesOfItemAtPath:filePath error:nil];
NSLog(@"%@",dict);
NSLog(@"%@,%@",[dict objectForKey:@"NSFileOwnerAccountName"],dict[@"NSFileOwnerAccountName"]);
//2)获取指定目录下文件及子目录
//使用递归的方式 获取当前目录及子目录下的所有的文件及文件夹
NSArray *subPaths = [fm subpathsAtPath:dirPath];
//subpathsOfDirectoryAtPath 不是使用递归的方式获取的
subPaths = [fm subpathsOfDirectoryAtPath:dirPath error:nil];
NSLog(@"subPaths = %@",subPaths);
//3)获取指定目录下的文件及目录信息(不在获取后代路径)
subPaths = [fm contentsOfDirectoryAtPath:dirPath error:nil];
NSLog(@"subPaths = %@",subPaths);
NSFileManager的一些用法
NSNumber
int a = 10;
int x = 100;
float f1 = 3.23f;
double d1 = 2.34;
// numberWithInt 把int 转换为 NSNumber
NSNumber *intObj = [NSNumber numberWithInt:a];
NSMutableArray *array = [NSMutableArray arrayWithObjects:intObj, nil];
// float ---> NSNumber
NSNumber *floatObj = [NSNumber numberWithFloat:f1];
[array addObject:floatObj];
// double ---> NSNumber
NSNumber *dObj = [NSNumber numberWithDouble:d1];
//把对象添加到数组中
[array addObject:dObj];
//@(变量名) ---> 把 x 转换为NSNumber对象
[array addObject:@(x)];
//@数值,把数值包装成对象
[array addObject:@18];
NSLog(@"array = %@",array);
// 数组的第一个元素和第二个元素相加
// array[0]+array[1]
//1)取出数组的元素
//2)把数组元素转换为基本数据类型的数据
NSNumber *n1 = array[0];
int a1 = [n1 intValue]; //获取对象的整形值
NSNumber *n2 = array[1];
float f2 = [n2 floatValue];
a1 = [array[0] intValue]+[array[1] floatValue];
NSLog(@"%d",a1);
NSNumber的一些用法
NSValue
//创建一个结构体变量,保存点
// p1 是 CGPoint 类型的结构体变量
CGPoint p1 = CGPointMake(20, 50);
NSRect r1 = NSMakeRect(0, 0, 200, 100);
//创建数组
NSMutableArray *arr = [NSMutableArray array];
//p1 ---> obj
//valueWithPoint 把结构体转换为NSValue对象
NSValue *pointVal = [NSValue valueWithPoint:p1];
//把对象存放到数组中
[arr addObject:pointVal];
[arr addObject:[NSValue valueWithRect:r1]];
NSLog(@"arr = %@",arr);
//取出r1的值
// rectValue 从NSValue对象中,取得NSRect类型的值
NSValue *r1Val = [arr lastObject];
NSRect r2 = [r1Val rectValue];
NSLog(@"%@",NSStringFromRect(r2));
typedef struct D{
int year;
int month;
int day;
} MyDate; //MyDate是一个别名
// 保存 一个 年月日
// 2015-7-30
MyDate md = {2015,7,30};
// md -----> obj
//@encode(MyDate) 作用,把MyDate类型生成一个常量字符串描述
NSValue *val = [NSValue valueWithBytes:&md objCType:@encode(MyDate)];
//定义一个数组,把val存到数组中
NSMutableArray *arr = [NSMutableArray arrayWithObject:val];
//从数组中取出来NSValue对象
//从对象中,取出结构体变量的值
// 传入一个结构体变量的地址
MyDate tmd;
// getValue获取结构值,保存到结构体变量tmd
[val getValue:&tmd];
NSLog(@"%d,%d,%d",tmd.year,tmd.month,tmd.day);
NSValue的一些用法
NSDate
//创建一个日期时间对象
//获取当前时间
NSDate *d1 = [NSDate date];
//0时区时间,北京 东8区
// 当前时间上+8小时,得到的就是现在时间
NSLog(@"%@",d1);
//2015-07-30 12:20:25 +0000
//格式化日期
//NSDateFormatter 日期格式化
//2015年07月30日 20:20:25
//2015-07-30 20:22:15
NSDateFormatter *formatter = [NSDateFormatter new];
//设置日期的显示格式的
// yyyy 表示四位的年份
// MM 表示2位的月份
// dd 表示2位的天数
// HH 表示24小时制得小数 hh - 12小时值
// mm 表示2位的分钟数
// ss 表示2位的秒数
formatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss";
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
//格式化日期
NSString *dateStr = [formatter stringFromDate:d1];
NSLog(@"%@",dateStr);
NSDateFormatter *formatter = [NSDateFormatter new];
//设置日期的显示格式的
// yyyy 表示四位的年份
// MM 表示2位的月份
// dd 表示2位的天数
// HH 表示24小时制得小数 hh - 12小时值
// mm 表示2位的分钟数
// ss 表示2位的秒数
formatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss";
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
//计算明天的此刻
// 距现在时间 24 小时以后,明天的此刻
NSTimeInterval t = 60*60*24;
NSDate *tom = [NSDate dateWithTimeIntervalSinceNow:t];
//计算昨天的时间
NSDate *zuotian = [NSDate dateWithTimeIntervalSinceNow:-t];
//格式化显示时间
NSString *timeStr = [formatter stringFromDate:zuotian];
NSLog(@"timeStr = %@",timeStr);
//日期对象
//2015-07-30 20:22:15
//year month day
// NSCalendar 日期类,可以帮我们快速的获取年月日 时分秒信息
NSDate *d = [NSDate date];
//创建日期的对象
NSCalendar *cal = [NSCalendar currentCalendar];
// cal components:获取日期的哪些部分 fromDate:日期对象
NSDateComponents *coms = [cal components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:d];
NSLog(@"year:%ld,month:%ld,day:%ld",coms.year,coms.month,coms.day);
NSDate的一些用法
小知识点:
位枚举:枚举值是2的0次方、1次方、2次方...
它的存在是为了有些方法中需要写入枚举值,但有时候我们并不需要枚举这时候可以用0来填写枚举值
他的枚举值可以用“ | ”(或)来一起选择
解释:
2 的 0 次方 1 00000001
2 的 1 次方 2 00000010
2 的 2 次方 4 00000100
2 的 3 次方 8 00001000
用“ | ”或正好能把想用的枚举值都用到 例如用1和2 00000011