oc学习之Foundation框架--装箱和拆箱
来源:互联网 发布:江阴网络女主播被杀 编辑:程序博客网 时间:2024/05/19 01:13
装箱:boxing,指的是将基本数据类型转为oc对象
拆箱:unboxing,指的是将oc对象转为基本数据类型
在这里我们要用到两个类--NSValue和NSNumber
NSValue:适用于结构体类型的变量与oc对象的转换。
NSNumber:适用于除了结构体变量之外的基本数据类型与oc对象之间的转换。
// NSValue
//系统自带的结构体,以CGPoint为例
//创建一个结构体的变量(基本数据类型)
CGPoint point =CGPointMake(100,100);
//装箱
NSValue *pointValue = [NSValuevalueWithPoint:point];
NSLog(@"%@",pointValue);
//拆箱
CGPoint point2 = [pointValuepointValue];
NSLog(@"拆箱:x=%.1f,y=%.1f",point2.x,point2.y);
//自定义的结构体
typedef struct{
NSUInteger year;
NSUInteger month;
NSUInteger day;
} JRDate;
//创建一个对象
JRDate date1 = {2016,1,1};
//获取自定义的结构体类型的字符串 @encode:编码 decode:解码
char *type =@encode(JRDate);
//装箱:参数1:要装箱的结构变量的地址。 参数2:表示类型的字符串
NSValue *dateValue =[NSValuevalue:&date1 withObjCType:type];
NSLog(@"dateValue:%@",dateValue);//打印出来是二进制的
//拆箱:
//声明一个结构变量,用于存储拆箱之后的结果
JRDate date2;
//取出对应的结构体变量:没有返回值,直接将拆箱的结果存到变量对应的地址中。参数:新声明的变量的地址
[dateValuegetValue:&date2];
NSLog(@"date2:%lu年%lu月%lu日",date2.year,date2.month,date2.day);
//NSNumber
//装箱,以int float为例
NSNumber *number1 = [[NSNumberalloc] initWithInt:1];
NSNumber *number2 = [NSNumbernumberWithInt:1];
NSNumber *number3 = [NSNumbernumberWithFloat:1.0];
//拆箱
int num1 = [number1 intValue];
int num2 = [number2 intValue];
float num3 = [number3floatValue];
//快速装箱 利用@()
NSNumber *num1_1 = @10;
NSNumber *num1_2 = @(10+2);
float tNum =10.0;
NSNumber *num1_3 = @(tNum);
- oc学习之Foundation框架--装箱和拆箱
- oc学习之Foundation框架--结构体
- oc学习之Foundation框架--字符串
- oc学习之Foundation框架--数组
- oc学习之Foundation框架--字典类
- oc学习之Foundation框架--NSSet类
- oc学习之Foundation框架--NSDate类
- OC学习笔记之Foundation框架NSNumber、NSValue和NSDate
- OC学习笔记-Foundation框架(一)
- OC学习笔记-Foundation框架(二)
- oc-foundation框架 之 常用得字符串处理
- OC之Foundation框架NSSet
- OC之Foundation框架使用
- OC系列之Foundation框架
- 黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate
- 黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate
- OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象
- OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类
- linux发布war包应用的常用命令
- primary和unique的区别
- Qt5 发布程序
- linux文本排序、交集、差集,查找并删除重复文件脚本、comm命令
- 使用is和as关键字
- oc学习之Foundation框架--装箱和拆箱
- 数据结构实验之排序七:选课名单
- linux磁盘配额
- 工作笔记-页面样式部分
- JavaScript-如何实现数组的随机排序?
- 如何有效学习iOS?
- linux磁盘逻辑卷的安装
- 8*8LED点阵显示爱心的Arduino实现
- 收藏html和css样式