Objectiv-C NSValue类的常用方法
2015-12-19 16:39
405 查看
NSValue类是OC中用来存储任意值的容器,是NSNumber的父类,NSNumber类是用来封装基本数据类型的
初始化方法:
第一个参数为要封装的变量的地址,第二个参数用来描述该数据类型的字符串,可以用@encode编译器指令自动生成该字符串
用法:
获取value中存储的对象如下:
判断两个NSvalue存储的对象是否相同
- (BOOL)isEqualToValue:(NSValue *)aValue
存储各种类型的便利构造器和属性,以及获取对应值的方法:
初始化方法:
- (instancetype)initWithBytes:(const void *)value objCType:(const char *)type //便利构造器方法 + (NSValue *) valueWithBytes:(const void *)value objCType:(const char *)type
第一个参数为要封装的变量的地址,第二个参数用来描述该数据类型的字符串,可以用@encode编译器指令自动生成该字符串
用法:
//自定义结构体类型Student typedef struct student{ char name[50]; char sex[2]; NSInteger age; NSInteger grade; char number[50]; }Student; //创建结构体stu Student stu = {"smithjackyson","男",23,98,"3112006304"}; //创建NSValue实例value存储stu NSValue *value = [[NSValue alloc] initWithBytes:&stu objCType:@encode(Student)]; NSValue *value1 = [NSValue valueWithBytes:&stu objCType:@encode(Student)];
获取value中存储的对象如下:
//定义一个新结构体变量stu1 Student stu1; //将value中存储的结构体赋值给stu1 [value getValue:&stu1];
判断两个NSvalue存储的对象是否相同
- (BOOL)isEqualToValue:(NSValue *)aValue
存储各种类型的便利构造器和属性,以及获取对应值的方法:
+ (NSValue *)valueWithRange:(NSRange)range @property(readonly) NSRange rangeValue + (NSValue *)valueWithCGPoint:(CGPoint)point - (CGPoint)CGPointValue + (NSValue *)valueWithCGVector:(CGVector)vector - (CGVector)CGVectorValue + (NSValue *)valueWithCGSize:(CGSize)size - (CGSize)CGSizeValue + (NSValue *)valueWithCGRect:(CGRect)rect - (CGRect)CGRectValue + (NSValue *)valueWithPointer:(const void *)aPointer @property(readonly) void *pointerValue + (NSValue *)valueWithNonretainedObject:(id)anObject @property(readonly) id nonretainedObjectValue + (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform - (CGAffineTransform)CGAffineTransformValue + (NSValue *)valueWithUIEdgeInsets:(UIEdgeInsets)insets - (UIEdgeInsets)UIEdgeInsetsValue + (NSValue *)valueWithUIOffset:(UIOffset)insets - (UIOffset)UIOffsetValue + (NSValue *)valueWithCATransform3D:(CATransform3D)aTransform @property(readonly) CATransform3D CATransform3DValue + (NSValue *)valueWithCMTime:(CMTime)time @property(readonly) CMTime CMTimeValue + (NSValue *)valueWithCMTimeRange:(CMTimeRange)timeRange @property(readonly) CMTimeRange CMTimeRangeValue + (NSValue *)valueWithCMTimeMapping:(CMTimeMapping)timeMapping @property(readonly) CMTimeMapping CMTimeMappingValue + (NSValue *)valueWithMKCoordinate:(CLLocationCoordinate2D)coordinate @property(readonly) CLLocationCoordinate2D MKCoordinateValue + (NSValue *)valueWithMKCoordinateSpan:(MKCoordinateSpan)span @property(readonly) MKCoordinateSpan MKCoordinateSpanValue + (NSValue *)valueWithSCNVector3:(SCNVector3)vector @property(nonatomic, readonly) SCNVector3 SCNVector3Value + (NSValue *)valueWithSCNVector4:(SCNVector4)vector @property(nonatomic, readonly) SCNVector4 SCNVector4Value + (NSValue *)valueWithSCNMatrix4:(SCNMatrix4) @property(nonatomic, readonly) SCNMatrix4 SCNMatrix4Value
相关文章推荐
- OC - 9.基于Quartz2D绘制下载进度条(demo)
- oc 的一些概念
- [代码例程] iPhone开发入门(7)--- 从C/C++语言到Objective-C语
- IOS 面试习题 Object-C
- objective-c block 讲解
- IOS求职之OC面试题
- iOS OC和Swift混编
- OC_继承,初始化
- OC 省市区划分
- iOS开发 — Quartz 2D知识点应用 (制作了一个Demo,源代码)
- OC 书签管理系统
- 编写 Objective-C 代码/掌握基本的编程技能 之 读后笔记
- Swift 和 OC 混编
- 利用UIScrollView实现展示图片的无限滚动及自动滚动
- Objective-C 类,对象,属性,方法
- Objective - C 字符串 数组 字典 集合的基本使用
- 图形上下文解释CGContextSaveGState/CGContextRestoreGState
- Objective-C更改placeholder字体颜色
- Objective-C关键字self和super详解
- 字符串的获取