NSNumber
NSNumber可以将基本数据类型包装成对象,这样就可以间接将基本数据类型存进NSArray,NSDictionary等集合中
常见的初始化方法:
//将一个int类型的数包装成一个number对象 NSNumber *number=[NSNumber numberWithInt:10]; //创建一个数组 NSMutableArray *array=[NSMutableArray array]; //添加值到数组中 [array addObject:number]; //从数组中取出来的还是一个number对象,不支持自动解包 NSNumber *number1=[array lastObject]; //将number转换为int类型 int num=[number1 intValue];
NSValue
NSNumber是NSValue的子类,但NSNumber只能包装数字类型,NSValue可以包装任意值。也就可以用NSValue包装结构体后加入NSArray、NSDictionary等集合中
创建NSValue的常用方法:
//初始化一个结构体 CGPoint point=CGPointMake(10,10); //将结构体包装成一个对象 NSValue *value=[NSValue valueWithPoint:point]; NSMutableArray *array=[NSMutableArray array]; //添加value [array addObject:value]; //取出放进去的value NSValue *value1=[array lastObject]; CGPoint *point1=[value1 pointValue];
NSValue包装自定义结构体
typedef struct{ int year; int month; int day; }Date; void value(){ Date date={2015,4,13}; //这里要传递结构体的地址 char *type=@encode(Date); NSValue *value=[NSValue value:&date withObjCType:type]; //定义一个结构体变量 Date date1; //取出包装过的结构体变量 [value getValue:&date1];
}
NSNull
集合中是不能存放nil值的,因为nil在结合中又特殊含义,但有时确实需要存储一个表示“什么都没有”的值,那么就可以使用NSNull,它也是NSObject的一个子类
创建和获取NSNull的方法
+(NSNull*)null
[NSNull null]总是返回一样的值,所以可以用==将该值与其他值进行比较
NSDate
Date返回的是当前的时间
NSDate *date=[NSDate date]; date=[NSDate dateWithTimeIntervalSinceNow:10] //返回当前的时间加10秒 date=[NSDate dateWithTimeIntervalSince1970:10] //机器时间从1970年开始,因此,返回从1970开始再加10秒的时间 date=[NSDate distantFuture]; //返回一个遥远的将来的时间 date=[NSDate distantPast]; //返回一个遥远的过去的时间