NSNumber:
// 将int类型的10包装成一个NSNumber对象
NSNumber *number = [NSNumer numberWithInt:10];
NSMutableArray *array = [NSMutableArray array];
// 添加数值到数组中
[array addObject:number];
// 取出来的还是一个NSNumber对象 不支持自动解包 不会自动转成int类型
NSNubmer *number1= [array lastObject];
// 将NSNumber转化成int类型
int num = [number1 intValue];
================================================
NSValue可以包装任意值
// 结构体
CGPoint point = CGPointMake(10,10);
NSValue *value = [NSValue valueWithPoint:point];
NSMutableArray *array = [NSMutableArray array];
// 添加value
[array addObject:value];
// 取出当时放进去的value
NSValue *value= [array lastObject];
CGPoint point1 = [value pointValue];
BOOL result = CGPointEqualToPoint(point1,point);
//自定义一个结构体
typedef struct {
int year;
int month;
int day;
} Date;
Date date = {2014,08,20}
char *type = @encode(Date); // 根据结构体类型名称生成类型描述字符串
// void * 代表任何指针 传指针就是地址 所以地址就是&date
[NSValue value:&date withObjectCType:type];
//定义一个结构体变量
Date date1;
// 取出包装好的结构体
[value getValue:&date1];
NSLog(@"year=%i,month=%i,day=%i",date1.year,date1.month,date1.day);
[value objCType]; // 取出类型描述字符串 就是上面存的那种
======================================================
NSNull
// null返回的都是同一对象 它是单例模式
NSNull *n = [NSNull null];