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);
成功的三大原则:
1、坚持
2、不要脸
3、坚持不要脸