博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSValue的使用
阅读量:5732 次
发布时间:2019-06-18

本文共 1091 字,大约阅读时间需要 3 分钟。

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

转载于:https://www.cnblogs.com/martinhu/p/3868399.html

你可能感兴趣的文章
[Python] numpy.nonzero
查看>>
2016-11-29
查看>>
C#反射的坑
查看>>
css3 box-shadow阴影(外阴影与外发光)讲解
查看>>
时间助理 时之助
查看>>
nginx快速安装
查看>>
自定义转场动画
查看>>
英国征召前黑客组建“网络兵团”
查看>>
Silverlight 2.5D RPG游戏“.NET技术”技巧与特效处理:(十二)魔法系统
查看>>
[NPM] Run npm scripts in series
查看>>
vs2013修改书签(vs书签文件位置)
查看>>
BZOJ 1923: [Sdoi2010]外星千足虫 [高斯消元XOR]
查看>>
C语言学习笔记
查看>>
PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...
查看>>
PS 如何使用液化工具给人物减肥
查看>>
cvc-complex-type.2.4.c: The matching wildcard...
查看>>
android 读取json数据(遍历JSONObject和JSONArray)
查看>>
pyjamas build AJAX apps in Python (like Google did for Java)
查看>>
<JavaScript语言精粹>-读书笔记(一)
查看>>
NPM教程
查看>>