NSValuve / NSNubmer
功能:将OC和C当中的基本数据类型转换成实例对象,即值类型 转换成 引用类型
C 和 OC 中常用的数据类型
int a = 5;
float b =5.0;
double c = 5.5;
char d = ‘a’;
bool flag = YES;
//可以用Number 将下面这些基本数据类型转换成对象
NSNumber *intNum = [NSNumber numberWithInt:a];
NSNumber *floatNum = [NSNumber numberWithFloat:b];
NSNumber *doubleNum = [NSNumber numberWithDouble:c];
NSNumber *chaiNum = [NSNumber numberWithChar:d];
NSNumber *boolNum = [NSNumber numberWithBool:flag];
//拆包
int a1 = [intNum intValue];
float b1 = [floatNum floatValue];
double c1 = [doubleNum doubleValue];
char d1 = [chaiNum charValue];
bool flag1 = [boolNum boolValue];
//其中NSValue可以将 CGPoint、CGSize、NSRange、NSEdgeInsets 等基本数据类型转换成对象
// CGPoint point = {3,4};
// CGSize size = {5,6};
// CGRect rect = {point,size};
// NSRange range = {10,3};
// NSRange range = NSMakeRange(<#NSUInteger loc#>, <#NSUInteger len#>)
CGPoint point = CGPointMake(3, 4);
CGSize size = CGSizeMake(5, 6);
// CGRect rect = CGRectMake(<#CGFloat x#>, <#CGFloat y#>, <#CGFloat width#>, <#CGFloat height#>)
CGRect rect = CGRectMake(3, 4, 5, 6);
NSRange range = NSMakeRange(10, 3);
NSEdgeInsets edgeInsets = NSEdgeInsetsMake(10, 10, 10, 10);//逆时针 上左下右