当前位置:网站首页>OC-NSNumber和NSValue一般用来装箱拆箱

OC-NSNumber和NSValue一般用来装箱拆箱

2022-08-02 06:50:00 彭同学她同桌

NSNumber

装箱:将值类型转换成引用类型
拆箱:将引用类型转换成值类型
int a = 1; 这个就是值类型 应该就是一些默认类型
string a;或者NSNumber这种就是引用类型 应该也可以说是NSObject

装箱

NSNumber *num1 = [[NSNumber alloc]initWithInt:20];
NSLog(@"%@ %@",num1,[num1 class]);//20 __NSCFNumber


NSNumber *num2 = [[NSNumber alloc]initWithChar:'a'];
NSLog(@"%@",num2);//97 这样就是将字母转换成了ascll码


NSNumber *num3 = @300;
NSLog(@"%@",num3);//300


int a = 29;
NSNumber *num5 = @(a);
NSLog(@"%@",num5);//5

拆箱

通过intValue floatValue拆箱

NSNumber *num3 = @300;
NSLog(@“%d”,num3 intValue);//300
NSNumber *num3 = @300.0;
NSLog(@“%f”,num3 floatValue);//300.0

NSValue(没有怎么搞懂)

typedef struct 
{
    
	int age;
	char* name;
	chat sex;
} SPerson
Sperson p;
p.name = "Yang";
p.age = 10;
p.sex = 'w';

//将一个结构体转换为NSValue对象
NSValue* value = [NSValue valueWithBytes:&p objCType:@encode(SPerson)];
SPerson p2;
//将一个NSValue对象转化为结构体
[value getValue:&p2];

NSLog(@"%s",p2.name);
NSLog(@"%d",p2.age);
NSLog(@"%c",p2.sex);
NSRange range = {
    12,2};
//常用结构体装箱
NSValue *rvalue = [NSValue valueWithRange:range];
//rangeValue将NSRange拆箱
NSLog(@"%@",NSStringFromRange([rvalue rangeValue]));
原网站

版权声明
本文为[彭同学她同桌]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_43535469/article/details/126099362