八十三、基础框架(四十一)复制 物件-实施 协议

本文介绍如何为自定义对象实现深拷贝功能,遵循<NSCopying>协议,通过编写copyWithZone:方法来确保对象能正确复制,包括数值属性的复制。

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

如果  你  想对某个物件  采取  copy这项措施,而  这个物件  又属于  你自己创建的类型,比如  AddressBook这类物件,就像  这样:

你  就会得到  像这样的错误信息:

如果  你需要复制的物件  属于  你自己创建的类型,那么  你创建的这类物件  必须遵循  <NSCopying>这项协议,也就是  要实施  这项协议中规定的措施。

现在  我们  要示范  如何编写  一项叫作copy的措施,并且  使  这项措施  适用于  Fraction这类物件。如果  你创建的物件类型  包含  在基础框架中任何一类物件当中,那么  你  必须采取  更为复杂的策略。你  必须考虑到  这点:包含你这类物件的那一大类物件  可能采取了  自己的策略。

我们  回忆一下  每个Fraction这类物件  都包含了  变量numerator  和  denominator。要复制  Fraction类型的物件,我们  需要为  新的物件  分配  内存空间,初始化,最后  将  变量numerator  和  denominator的值  存储 到新的物件当中

如果  你的物件类型  遵循  <NSCopying>这项协议,那么  你  必须编写  copyWithZone:这项措施,并且  使  之 适用于  这类物件。因为  你  对一个物件  采取  copy这项措施后,copy这项措施  就会采取  copyWithZone:这项措施。如果  你  需要区分  可修改复制品  和  不可修改复制品,那么  你  可以使  你的物件  遵循  <NSMutableCopying>这项协议,并且  实施  mutableCopyWithZone:这项措施。copyWithZone:这项措施产生的结果  为  不可修改的复制品,而  mutableCopyWithZone:这项措施产生的结果  为  可修改的复制品。要创建  可修改的复制品  并不要求  被复制的物件  是  可修改的。

首先  要将  Fraction这类物件的接口文件中的@interface命令  修改成  这样:

然后  在实施文件中  加入  copyWithZone:这项措施的具体内容:

其中的参数zone  和  你在程序中分配、使用的不同内存区域  有关。只有  你编写的程序  需要分配  许多内存空间  而且  你  需要优化  内存分配时,你  才需要处理  zone这个参数。

下面的程序  检验了  copyWithZone:这项措施  是否  正常  工作:

运行  这个程序后,可以得到  这样的结果:

 

这个程序  首先  创建了  一个Fraction类型的物件fractionOne,并且  将  fractionOne的值  设定为  2/5。然后  对fractionOne这个物件  采取  copy这项措施,copy这项措施  会对fractionOne这个物件  采取  copyWithZone:这项措施。copyWithZone:这项措施  会创建  一个新的Fraction类型物件,并且  将  其实施对象中的值  复制  到新创建的Fraction类型物件当中,接着  将  新创建的Fraction类型物件的地址  传递回来,并且  存储  在变量FractionTwo当中。将  物件fractionOne  复制  到fractionTwo后,我  将  fractionTwo的值  显示出来,以便验证  复制  是否成功。

接着  把  fractionTwo的值  设定为  1/3后,再  将  fractionOne  和  fractionTwo的值  分别  显示出来,以便验证  变量fractionOne  和  fractionTwo  并没有存储着  同一个物件的地址。

如果  你的这类物件  还包含  另外一小类物件,那么  copyWithZone:这项措施  同样  适用于  这一小类物件。在这种情况下,你  需要把

这行语句  修改为

这样  你分配的内存空间  就属于  copyWithZone:这项措施的实施对象所属的类型了。


内容概要:本文深入探讨了金属氢化物(MH)储氢系统在燃料电池汽车中的应用,通过建立吸收/释放氢气的动态模型和热交换模型,结合实验测试分析了不同反应条件下的性能表现。研究表明,低温环境有利于氢气吸收,高温则促进氢气释放;提高氢气流速和降低储氢材料体积分数能提升系统效率。论文还详细介绍了换热系统结构、动态性能数学模型、吸放氢特性仿真分析、热交换系统优化设计、系统控制策略优化以及工程验证与误差分析。此外,通过三维动态建模、换热结构对比分析、系统级性能优化等手段,进一步验证了金属氢化物储氢系统的关键性能特征,并提出了具体的优化设计方案。 适用人群:从事氢能技术研发的科研人员、工程师及相关领域的研究生。 使用场景及目标:①为储氢罐热管理设计提供理论依据;②推动车载储氢技术的发展;③为金属氢化物储氢系统的工程应用提供量化依据;④优化储氢系统的操作参数和结构设计。 其他说明:该研究不仅通过建模仿真全面验证了论文实验结论,还提出了具体的操作参数优化建议,如吸氢阶段维持25-30°C,氢气流速0.012g/s;放氢阶段快速升温至70-75°C,水速18-20g/min。同时,文章还强调了安全考虑,如最高工作压力限制在5bar以下,温度传感器冗余设计等。未来的研究方向包括多尺度建模、新型换热结构和智能控制等方面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值