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]));