// // main.m // NSNumberAndNSValue // // Created by WildCat on 13-7-26. // Copyright (c) 2013年 wildcat. All rights reserved. // #import <Foundation/Foundation.h> #pragma mark 对基本数据类型进行包装 void number(){ NSNumber *number=[NSNumber numberWithInt:6]; NSLog(@"%@",number); NSArray *array=[NSArray arrayWithObjects:number, nil]; NSNumber *number2=[array objectAtIndex:0]; int a=[number2 intValue]; NSLog(@"%i",a); } #pragma mark 对结构体等类型进行包装 void value(){ //创建一个Point结构体 CGPoint point=CGPointMake(10, 12); //包装 NSValue *value1=[NSValue valueWithPoint:point]; //创建一个数组 NSMutableArray *array=[NSMutableArray array]; //添加元素 [array addObject:value1]; } #pragma mark - 对自定义结构体进行包装 #pragma mark 定义一个结构体 typedef struct{ int year; int month; int day; } Date; void valueUser(){ Date date1={2013,7,26}; //包装 value:要传一个指针 withObjCType:要传一个类型包装后的字符串 (即:char *type=@encode(Date)) char * type=@encode(Date); NSValue *dvalue=[NSValue value:&date1 withObjCType:type]; //取出 Date newDate; [dvalue getValue:&newDate]; NSLog(@"year:%i,month:%i,day:%i",newDate.year,newDate.month,newDate.day); } int main(int argc, const char * argv[]) { @autoreleasepool { number(); valueUser(); } return 0; }