Objective-C--- NSValue 详解 struct 结构体

本文介绍如何在Objective-C中利用结构体进行数据封装,并通过NSValue类简化结构体的使用过程。文中详细解释了如何创建结构体、使用NSValue存储结构体实例,以及如何从NSValue中取出数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在C/C++开发中常会用到结构体来帮助我们简单封装基本数据类型,在Objective-C中我们也可以使用结构体来完成数据类型的封装。同时,Cocoa Touch还提供了一个NSValue来帮助我们更好地在开发中使用结构体。

我们可以使用NSValue来辅助我们实现一些简单数据结构的封装。比如我们定义了一个简单的结构体类型

Objective-c代码 收藏代码
  1. typedefstruct{
  2. intid,
  3. floatheight,
  4. unsignedcharflag
  5. }MyTestStruct;

此时,我们就可以使用MyTestStruct这个结构体来很容易地封装数据。如

Objective-c代码 收藏代码
  1. MyTestStructmyTestStruct;
  2. myTestStruct.id=1;
  3. myTestStruct.height=23.0;
  4. myTestStruct.flag='A';
  5. NSValue*value=[NSValuevalueWithBytes:&myTestStructobjCType:@encode(MyTestStruct)];

在我们想取出*value 中的数据时,可以使用如下方式:

Objective-c代码 收藏代码
  1. MyTestStructtheTestStruct;
  2. [valeugetValue:&theTestStruct];

之后就可以对theTestStruct的操作来取得其中的数据。

对于NSValue 类的使用,还有一个地方就是我们在iPhone显示点或者其它几何图形时。比如我们想取得用户在屏幕上的点击轨迹,此时首先我们想到的就是使用CGPoint这个结构体来保存每一次点击的数据。此时,我们就可以使用NSValue类别中的+valueWithCGPoint:来帮助我们来为CG Framework提供数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值