ios NSNumber / NSValue

NSNumber:

数组里面要放的是OC类的对象,OC不允许存放基本数据类型的数据

用于将基本数据类型的数据或变量封装成OC的类:

封装方法: numberWith...
拆封方法: …Value (任何类都是可以拆的)

double e = 2.68;
NSNumber *i = [NSNumber numberWithDouble(Int Char ……):e]; //封装基本数据类型
e = [i doubleValue]; //拆封,将O-C类的对象还原为基本数据类型的数据
NSLog(@"e = %lg,i  i = %@",e , i);

NSValue:

是NSNumber的父类

进一步的简化NSnumber,主要用于结构体的封装,当然它也可以封装基本类型,就是比较麻烦(是需要取地址的)

typedef struct {
    int x;
    int y;
}TRPoint;

TRPoint point; //不要用*,用*就要再堆上分配空间
point.x = 10;
point.y = 20;
NSValue *value = [NSValue valueWithBytes:&point objCType:@encode(TRPoint)];
NSLog(@"%@", value);
TRPoint point1;
[value getValue:&point1];
NSLog(@"%d ,%d",point.x, point.y);
posted @ 2017-08-23 20:42  笑笑就好90  阅读(126)  评论(0编辑  收藏  举报