iOS学习14之OC NSNumber + NSValue
1、NSNumber
数值类。
作用:实现基本数据类型与OC对象类型的相互转化。
1> NSNumber创建对象
1 // 初始化方法 2 NSNumber *num1 = [[NSNumber alloc] initWithInt:39]; 3 // 类方法 4 NSNumber *num2 = [NSNumber numberWithInteger:10000]; 5 // 字变量 6 NSNumber *num3 = @100;
NSNumber字面量
1 // 常量: 2 NSNumber *intNumber = @38; 3 NSNumber *charNumber = @'w'; 4 // 变量: 5 int age = 18; 6 NSNumber *ageNumber = @(age); 7 char gender = 'w'; 8 NSNumber *genderNumber = @(gender);
2> NSNumber常用方法
① 其他类型转化为NSNumber
int类型转化为NSNumber类型的对象
+ (NSNumber *)numberWithInt:(int)value;
float类型转化为NSNumber类型的对象
+ (NSNumber *)numberWithFloat:(float)value;
char类型转化为NSNumber类型的对象
+ (NSNumber *)numberWithChar:(char)value;
② NSNumber转化为其他类型
NSNumber类型对象转化为int类型的数据
@property (readonly) int intValue;
NSNumber类型对象转化为float类型的数据
@property (readonly) float floatValue;
NSNumber类型对象转化为char类型的数据
@property (readonly) char charValue;
1 int a = [num2 intValue]; 2 double b = [num1 doubleValue]; 3 NSLog(@"%d,%f", a, b); 4 NSLog(@"%@", num1);
2、NSValue
完成 结构体 和 对象类型 的互转。
1> NSRange类型转化为NSValue类型的对象
+ (NSValue *)valueWithRange:(NSRange)range;
NSPoint, NSRect, NSSize, CGSize, CGPoint, CGRect结构体类型 转化为NSValue类型的对象,使用方法同上,用法略!
注: CGSize, CGPoint, CGRect是UI中使用的结构体类型。
2> NSValue类型转化为NSRange类型的结构体变量
@property (readonly) NSRange rangeValue;
NSValue结构体类型转化为NSPoint, NSRect, NSSize, CGSize, CGPoint, CGRect类型的结构体变量,使用方法同上,用法略!
总结:
NSNumbe 、NSValue主要是为了完成基本数据类型,结构体和对象 的互转,便于与collection配合使 (collection — — 集合)。