您的位置:首页 > 产品设计 > UI/UE

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息