NSValue
2013-12-22 20:03
351 查看
NSValue,即苹果定义的对象封装器,提供了简单的容器来包含C或Objective-C数据项。可以容纳任何基本数据类型如char,int,float,double,以及指针,结构体和对象ids。NSArray和NSSet集合类对象要求它们的元素为对象类型,NSValue的主要目的是使这些数据类型可以添加至集合中。NSValue对象是不可变类型。
简而言之,NSValue是基本数据类型或自定义数据类型所定义变量的对象包装器。
1、创建NSValue,使用NSRange
valueWithRange:、rangeValue
NSRange rangeA=[[NSRange alloc] init];
rangeA.location = 10;
rangeA.length = 10;
NSValue * value = [NSValue valueWithRange:rangeA];
NSRange rangeB = [value rangValue];
2、封装结构体
typedef struct
{
int id,
float height,
unsigned char flag
} MyTestStruct;
MyTestStruct testStruct1;
testStruct1.id = 0;
testStruct1.height = 10;
testStruct1.flag = 'Y';
NSValue * value = [NSValue
valueWithBytes:&testStruct1
objCType:@encode(MyTestStruct)];
取出NSValue的值
NSValue * valueB = [valeu getValue:&testStruct1
];
typedef struct {
int id,
float height,
unsigned char flag
}MyTestStruct;
3、比常NSValue是否相等
isEqualToValue:
4、其他常用方法
+ (NSValue *)valueWithPointer:(const void *)pointer;//保存对象指针
+ (NSValue *)valueWithCGPoint:(CGPoint)point;//保存CGPoint结构体
+ (NSValue *)valueWithCGSize:(CGSize)size;//保存CGSize结构体
+ (NSValue *)valueWithCGRect:(CGRect)rect;//保存CGRect结构体
+ (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform;
+ (NSValue *)valueWithUIEdgeInsets:(UIEdgeInsets)insets;
- (void *)pointerValue;
- (CGPoint)CGPointValue;
- (CGSize)CGSizeValue;
- (CGRect)CGRectValue;
- (CGAffineTransform)CGAffineTransformValue;
- (UIEdgeInsets)UIEdgeInsetsValue;
简而言之,NSValue是基本数据类型或自定义数据类型所定义变量的对象包装器。
1、创建NSValue,使用NSRange
valueWithRange:、rangeValue
NSRange rangeA=[[NSRange alloc] init];
rangeA.location = 10;
rangeA.length = 10;
NSValue * value = [NSValue valueWithRange:rangeA];
NSRange rangeB = [value rangValue];
2、封装结构体
typedef struct
{
int id,
float height,
unsigned char flag
} MyTestStruct;
MyTestStruct testStruct1;
testStruct1.id = 0;
testStruct1.height = 10;
testStruct1.flag = 'Y';
NSValue * value = [NSValue
valueWithBytes:&testStruct1
objCType:@encode(MyTestStruct)];
取出NSValue的值
NSValue * valueB = [valeu getValue:&testStruct1
];
typedef struct {
int id,
float height,
unsigned char flag
}MyTestStruct;
3、比常NSValue是否相等
isEqualToValue:
4、其他常用方法
+ (NSValue *)valueWithPointer:(const void *)pointer;//保存对象指针
+ (NSValue *)valueWithCGPoint:(CGPoint)point;//保存CGPoint结构体
+ (NSValue *)valueWithCGSize:(CGSize)size;//保存CGSize结构体
+ (NSValue *)valueWithCGRect:(CGRect)rect;//保存CGRect结构体
+ (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform;
+ (NSValue *)valueWithUIEdgeInsets:(UIEdgeInsets)insets;
- (void *)pointerValue;
- (CGPoint)CGPointValue;
- (CGSize)CGSizeValue;
- (CGRect)CGRectValue;
- (CGAffineTransform)CGAffineTransformValue;
- (UIEdgeInsets)UIEdgeInsetsValue;
相关文章推荐
- NSString+NSMutableString+NSValue+NSAraay用法汇总4 nsarrary
- NSString+NSMutableString+NSValue+NSAraay用法汇总(1)
- NSString+NSMutableString+NSValue+NSAraay用法汇总
- NSValue
- NSNumber,NSValue和NSData
- oc-Foundation框架-NSValue-常用方法
- NSValue 存取自定义结构体
- Foundation中的NSNumber与NSValue
- NSValue NSNumber NSData类
- 【Foundation学习笔记】数字对象NSNumber和NSValue
- 黑马程序员--NSArray,NSString,NSSet,NSDictionary,NSNumber,NSValue 及其可变(NSMutable..)
- nsvalue与nsnumber
- Objective-C( Foundation框架 一 NSNumber(NSValue))
- Foundation.h下的 NSValue/NSNumber
- 形参个数可变, NSNumber和NSValue,获得Class
- NSValue的使用
- NSNumber NSValue与NSDate 详解
- NSString+NSMutableString+NSValue+NSAraay用法汇总5
- NSString+NSMutableString+NSValue+NSAraay用法汇总(2)
- NSValue包装对象指针,CGRect结构体等