码迷,mamicode.com
首页 > 其他好文 > 详细

NSValue的使用

时间:2014-07-26 00:28:16      阅读:449      评论:0      收藏:0      [点我收藏+]

标签:使用   strong   数据   io   re   c   cti   ar   

NSNumber是NSValue的子类,但 NSNumber只能包装数字类型,NSValue可以包装任意值。也可以用NSValue包装结构体后加入NSArray,NSDictionary等集合中。

创建NSValue的常用方法

  • - (id)initWithBytes:(const void *)value objCType:(const char *)type
  • + (NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type
  • + (NSValue *)value:(const void *)value withObjCType:(const char *)type

value参数是想要包装的数据的地址(如一个NSPoint的地址,可以用&来取地址),type参数是用来描述这个数据类型的字符串,用@encode指令来生成

例如:

typedef struct{    

  int year;    

  int month;    

  int day;

}Date;

Date date = {2013, 4,7};

//包装结构体

char *ctype = @encode(Date);

NSValue *value = [NSValue value:&date withObjCType:ctype];

//取出包装好的结构体

Date date1;

[value getValue:&date1];

NSValue常用方法

  • - (void)getValue:(void *)value //获取所包装的数据,保存到value这个地址
  • - (const char *)objCType //返回描述所包装数据类型的字符串, 即用@encode(Date)生成的类型描述字符串
  • - (BOOL)isEqualToValue:(NSValue *)value

为了方便struct和NSValue的转换,cocoa还提供了以下方法:

  • + (NSValue *)valueWithPoint:(NSPoint)point
  • + (NSValue *)valueWithSize:(NSSize)size
  • + (NSValue *)valueWithRect:(NSRect)rect
  • - (NSPoint)pointValue
  • - (NSSize)sizeValue
  • - (NSRect)rectValue

NSValue的使用,布布扣,bubuko.com

NSValue的使用

标签:使用   strong   数据   io   re   c   cti   ar   

原文地址:http://www.cnblogs.com/martinhu/p/3868399.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!