黑马程序员——Foundation框架——NSValue类介绍和使用

来源:互联网 发布:linux transmission 编辑:程序博客网 时间:2024/06/06 03:56

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


1. NSValue类

NSValueN是SNumber的父类,NSValue可以存储任意类型的数据,NSValue主要用来把指针,结构体包装成OC对象,以便存储。


2. 把结构体包装成NSValue对象

<span style="white-space:pre"></span>//定义一个可变数组        NSMutableArray *arr=[NSMutableArray array];        //定义一个NSPoint结构体        NSPoint p=NSMakePoint(10, 8);        //把NSPoint结构体转换成NSValue对象        NSValue *v1=[NSValue valueWithPoint:p];        [arr addObject:v1];                //定义一个NSSize结构体        NSSize s=NSMakeSize(10, 20);        //把NSSize结构体转换成NSValue对象        NSValue *v2=[NSValue valueWithSize:s];        [arr addObject:v2];                //定义一个NSRect结构体        NSRect r=NSMakeRect(0, 0, 10, 20);        //把NSRect结构体转换成NSValue对象        NSValue *v3=[NSValue valueWithRect:r];        [arr addObject:v3];


把自定义的结构体包装成NSValue对象

#import <Foundation/Foundation.h>//自定义一个结构体typedef struct D{    int year;    int month;    int day;}MyDate;int main(int argc, const char * argv[]) {    @autoreleasepool {        //定义一个结构体变量        MyDate md={2015,12,06};                //把自定义结构体变量转换成NSValue对象        NSValue *value=[NSValue valueWithBytes:&md objCType:@encode(MyDate)];        //创建一个数组,把value对象保存到数组中        NSMutableArray *arr=[NSMutableArray arrayWithObject:value];                //获取结构体值,保存到自定义变量mydate中        MyDate mydate;        [value getValue:&mydate];                NSLog(@"%d-%d-%d",mydate.year,mydate.month,mydate.day);    }    return 0;}


3. 从NSValue对象中抽取出包装的结构体

        //从NSvalue对象中取出NSPoint的值        NSPoint p1=[arr[0] pointValue];                //从NSvalue对象中取出NSSize的值        NSSize s1=[arr[1] sizeValue];                //从NSvalue对象中取出NSRect的值        NSRect r1=[arr[2] rectValue];



0 0
原创粉丝点击