NSValue
来源:互联网 发布:达内少儿编程能加盟吗 编辑:程序博客网 时间:2024/05/22 04:44
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 = [NSValuevalueWithBytes:&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
- NSValue
- NSValue
- NSValue
- NSValue
- NSValue
- NSValue
- NSValue
- NSValue
- NSValue用法
- NSValue 札记
- OC-NSValue
- NSvalue 详解
- NSValue用法
- Foundation--NSValue
- OC-NSValue
- foundation-NSValue
- NSNumber,NSValue
- cocos2d-x学习笔记04——生成andriod的apk
- 析构函数何时被调用
- min3d框架源码分析(二)
- 讲故事,学(Java)设计模式—观察者模式
- Leetcode: Remove Duplicates from Sorted Array
- NSValue
- Java开发中的23种设计模式详解
- 软件工程总结
- 多态的体现1
- 多态举例
- Arduino驱动无法安装 找不到指定文件问题的解决方法
- live555 分析- openRtsp
- 栈的增长方向
- MVC接口的使用之自动创建实例化(一)学习