转自 http://www.cnblogs.com/kenshincui/p/3885689.html#dictionary
使用NSValue如下方法进行装箱:
+(NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type;
调用下面的方法进行拆箱:
-(void)getValue:(void *)value;
// // main.m // FoundationFramework // // Created by Kenshin Cui on 14-2-16. // Copyright (c) 2014年 Kenshin Cui. All rights reserved. // #import <Foundation/Foundation.h> typedef struct { int year; int month; int day; } Date; //NSNumber是NSValue的子类,而NSValue可以包装任何类型,包括结构体 void test1(){ //如果我们自己定义的结构体包装 Date date={2014,2,28}; char *type=@encode(Date); NSValue *value3=[NSValue value:&date withObjCType:type];//第一参数传递结构体地址,第二个参数传递类型字符串 NSArray *array2=[NSArray arrayWithObject:value3]; NSLog(@"%@",array2); /*结果: ( "<de070000 02000000 1c000000>" ) */ Date date2; [value3 getValue:&date2];//取出对应的结构体,注意没有返回值 //[value3 objCType]//取出包装内容的类型 NSLog(@"%i,%i,%i",date2.year,date2.month,date2.day); //结果:2014,2,28 } int main(int argc, const char * argv[]) { test1(); return 0; }
本文介绍了如何利用Objective-C中的NSValue类来包装自定义的结构体类型,并演示了具体的装箱与拆箱过程。通过实例说明了如何将一个包含日期信息的结构体打包进NSValue对象,并从该对象中还原出原始结构体。
8133

被折叠的 条评论
为什么被折叠?



