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

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

typedefstruct Test{
 int tag;
    float x;
    float y;
}Test;
   Test test1;
    test1.tag = 1;
    test1.x = 2;
    test1.y = 3;     
    NSValue* value_test = [NSValue value:&test1 withObjCType:@encode(Test)];//对结构体进行封装
    Test test2;//声明test2,为了得到test1的值
    [value_test getValue:&test2];//同类型赋值
    NSLog(@"%s",@encode(Test));//封装各式 输出结果是iff就是nsvalue的对数值的存储方式(内存中的存储格式)
    NSLog(@"tag=%i x=%f y=%f",test2.tag,test2.x,test2.y);//输出test2的各个参数的值
/**********************解释*********************************/
1:在这里使用了nsvalue对struct进行封装,然后在提取其数值
2:使用了@encode()是对结构体进行编码,得到其内存结构  
其查看方式NSLog(@"%s",@encode(struct-type));//其封装格式解释为 得到一个内存空间其由基本的类型构成 可以通过这个查看其构成类型
3[ (nsValue*) getValue:&(struct-type)];//值能够传递因为其内存结构是相同的 所以可以相互赋值但是getvalue是nsvalue的方法
把nsvalue中的值赋给结构体变量(struct-type)
(nsValue按照@encode(struct-type)内存结构存储了struct—type的值);
cocoa文档连接
 

转载于:https://www.cnblogs.com/lovexian/archive/2012/03/29/2423515.html

你可能感兴趣的文章
MyBatis学习总结(六)——调用存储过程
查看>>
Java基础学习总结(8)——super关键字
查看>>
职场上班族可吃零食能消除疲劳
查看>>
PL/SQL“ ORA-14551: 无法在查询中执行 DML 操作”解决
查看>>
Java基础学习总结(8)——super关键字
查看>>
a.b.c.d.e.f.g这样的字段变成d.e.f.g的几种方法
查看>>
MySQL5.7运行自定义函数报错
查看>>
C++中关联容器和序列式容器在erase迭代器时的区别
查看>>
细谈围城---我的启示录
查看>>
字符串shuffle
查看>>
Nginx+PHP配置
查看>>
如何修改Xenserver网卡的offload
查看>>
Jmeter安装手记
查看>>
FCKeditor配置步骤详解
查看>>
Ubuntu 12.04 Openstack Essex 安装(单节点)------01
查看>>
mysql 数据备份与还原
查看>>
CentOS 7网卡配置-nmcli
查看>>
Spring MVC
查看>>
[视频教学]Maclean教你用Vbox在Enterprise Linux 5上安装Oracle 10gR2 RAC
查看>>
【Oracle Database 12c新特性】Online Statistics Gathering for Bulk-Load 针对批量数据加载的在线统计信息收集...
查看>>