NSValue
针对结构体
NSNumber->数字
NSNumber是NSValue的一个子类
NSValue可以包装任意值(也可以包装对象,吃太多 )
void value(){
CGPoint point=CGPointMake(10,10);
NSValue *value=[NSValue valueWithPoint:point];
NSMutableArray array=[NSMutableArray array];
[array addObject:value];
NSValue *value1=[array lastObject];
CGPoint point1=[value1 pointValue];
BOOL result=CGPointEqualToPoint(point1,point);
NSLog(@”result=%i”,result);
}
typedef struct{
int year;
int month;
int day;
}Date;
void value2(){
Date date={2015,6,4};
//void * 代表任何指针
//根绝结构体类型生成对应的字符串
char *type=@encode(date);
NSValue *value=[NSValue value:&date withObjCType:type];
//取出包装好的结构体
//定义一个结构体变量用于接收
//[value objCType]; 取出类型描述字符串
Date date1;
[value getValue:&date];//没有返回值,指针搞了
NSLog(@“year=%i,month=%i,day=%i”,date1.year,date1.month,date1.day);
}