十五:NSValue

NSValue对象是用来存储一个C或者Objective-C数据的简单容器。它可以保存任意类型的数据,比如int,float,char,当然也可以是指pointers, structures, and object ids(NSNumber只能保存基本数据类型,不能保存结构体)。NSValue类的目标就是允许以上数据类型的数据结构能够被添加到集合里,例如那些需要其元素是对象的数据结构,如NSArray或者NSDictionary的实例。需要注意的是NSValue对象一直是不可枚举的。

下面主要介NSValue保存结构体类型,代码如下:

 1 #import <Foundation/Foundation.h> 2  3 int main(int argc, const char * argv[]) { 4     @autoreleasepool { 5         //常用结构体类型的转化 6         CGPoint point = {35,67}; 7         NSValue *pointV = [NSValue valueWithPoint:point]; 8         CGRect rect = {34,2,34,78}; 9         NSValue *rectV = [NSValue valueWithRect:rect];10         NSLog(@"%@  %@",pointV,rectV);11         //还有其他结构体类型12 //        valueWithSize13 //        valueWithRange14 //        valueWithPointer15 //        valueWithEdgeInsets16     17         //自定义结构体的转化18        typedef struct {19             int age;20             char *name;21             double weight;22         }Person;23         Person p = {32,"James",230.0}; //此处p前面不能加*24         //转化为对象类型25         //valueWithBytes:接收一个指针,即需要包装的结构体变量的指针26         //objCType:需要包装的数据类型,@encode开头27         NSValue *pV = [NSValue valueWithBytes:&p objCType:@encode(Person)];28         //打印出来的是二进制,所以需要取出pV中的数据打印29         NSLog(@"%@",pV);30         //从Value取出自定义机构体变量31         Person contentPV;32         [pV getValue:&contentPV];33         NSLog(@"%d %s %f",contentPV.age,contentPV.name,contentPV.weight); 34     }35     return 0;36 }

你可以用爱得到全世界,你也可以用恨失去全世界

十五:NSValue

相关文章:

你感兴趣的文章:

标签云: