首页 > 代码库 > NSValue的使用
NSValue的使用
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 = http://www.mamicode.com/[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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。