标签:nsvalue与结构体互转 结构体对象 oc结构体与nsstring转换
NSValue简介
NSValue是结构体的对象类型,它为我们封装了一系列的很好的方法
可以方便的把结构体转为对象类型
1.把普通的结构体转化为NSValue类型
+ (NSValue *)valueWithPoint:(NSPoint)point; + (NSValue *)valueWithSize:(NSSize)size; + (NSValue *)valueWithRect:(NSRect)rect; + (NSValue *)valueWithEdgeInsets:(NSEdgeInsets)insets
常见的结构体内部定义如下:
(1)CGRect
CGRect定义
/* Rectangles. */ struct CGRect { CGPoint origin; CGSize size; }; typedef struct CGRect CGRect;
还包含了一个Size是矩形的宽和高
(2)CGPoint
CGPoint定义
/* Points. */ struct CGPoint { CGFloat x; CGFloat y; }; typedef struct CGPoint CGPoint;
CGFloat 是double类型的别名
(3)CGSize
CGSize定义
/* Sizes. */ struct CGSize { CGFloat width; CGFloat height; }; typedef struct CGSize CGSize;
CGSize是一个 包含宽和高的结构体
使用示例:
CGRect转换为NSValue
CGRect rect = CGRectMake(100, 100, 100, 100); NSValue *rect1 = [NSValue valueWithRect:rect];
CGPoint po = CGPointMake(100, 100); NSValue *po1 = [NSValue valueWithPoint:po];CGSize转换为NSValue
CGSize size = CGSizeMake(100, 100); NSValue *size1 = [NSValue valueWithSize:size];
可以使用NSValue对象的属性来获取其 结构体的值
@property (readonly) NSPoint pointValue; @property (readonly) NSSize sizeValue; @property (readonly) NSRect rectValue; @property (readonly) NSEdgeInsets edgeInsetsValue
获取CGRect值
CGRect rec = [rect1 rectValue];
获取CGPoint值
CGPoint po2 = [po1 pointValue];获取CGSize值
CGSize size2 = [size1 sizeValue];
把 结构体 和 NSString相互转换,请参见:
http://blog.csdn.net/yangbingbinga/article/details/43105597
OC基础教程11-结构体对象NSValue与NSString之间的转换
标签:nsvalue与结构体互转 结构体对象 oc结构体与nsstring转换
原文地址:http://blog.csdn.net/yangbingbinga/article/details/46409965