// // main.m // NSValue // // Created by Rayln Guan on 9/9/13. // Copyright (c) 2013 Rayln Guan. All rights reserved. // #import <Foundation/Foundation.h> void value1(){ //point是结构体。没办法直接放入array当中,这时候我们需要用NSValue进行包装后放入 CGPoint point = CGPointMake(5, 10); NSMutableArray *arr = [NSMutableArray array]; #pragma mark 这是错误的做法,会报错! //[arr addObject:point]; #pragma mark 正确做法 NSValue *value = [NSValue valueWithPoint:point]; [arr addObject:value]; //取出结构体 NSValue *val = [arr lastObject]; CGPoint newPoint = [val pointValue]; NSLog(@"%f,%f", newPoint.x, newPoint.y); //比较Point成员是否相同 CGPointEqualToPoint(point, newPoint); } //自定义结构体的包装 typedef struct { int year; int month; int day; } Date; void value2(){ Date date = {2010,4,8}; //把结构体放入NSValue中 //根据结构体类型返回结构体类型的字符串 char *type = @encode(Date); NSValue *val = [NSValue value:&date withObjCType:type]; //取值 Date result; [val getValue:&result]; NSLog(@"%i", result.year); //取出类型描述字符串 [val objCType]; } int main(int argc, const char * argv[]) { @autoreleasepool { value1(); value2(); } return 0; }
NSValue的用法
猜你喜欢
转载自rayln.iteye.com/blog/1939464
今日推荐
周排行