八十一、基础框架(三十九)复制 物件-copy 和 mutableCopy这两项措施

我们  可以对基础框架中的物件  采取  copy  或者  mutableCopy这两项措施  来复制  物件。这  是  通过实施  <NSCopying>这项协议中的措施  实现的。如果  你  需要区别  可修改的复制品  和  不可修改的复制品,你  可以根据<NSMutableCopying>这项协议  实施  措施。

下面的程序  示范了  如何复制  物件:

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

在这个程序中  我们  创建了  一个可修改的数组物件dataArray,并且  将  常量字符串物件@”one”,@”two”,@”three”,@”four”  依次  添加  到这个数组物件当中。在之前  提到过

这行语句  仅仅  将  数组物件dataArray的地址  存储  在变量dataArray2当中。接着

这行语句  将  数组物件dataArray2中的第0个物件  移除。

最后  我们  将  数组物件dataArray  和  dataArray2中的物件  显示出来,我们  可以看到  两个数组物件中的第0个物件,也就是  @”one”,不见了。

接下来

这行语句中  对数组物件dataArray  采取了  mutableCopy这项措施,创建了  一个dataArray的复制品,并且  将  这个复制品的地址  存储  在变量dataArray2当中。通过这样的方式,我们  在内存中  就有了  两个独立的数组物件,并且  都包含   三个元素。现在  如果  我们  移除  数组物件dataArray2当中的元素  对数组物件dataArray中的元素  没有  任何影响,这点  从程序的运行结果  就可以看得出来。

你  可以为不可修改的物件  创建  可修改的复制品。同样的道理,你  也可以为可修改的物件  创建  不可修改的复制品。

如果  你  为数组物件  创建  复制品,那么  这个数组物件中  每个物件的引用次数  都会增加  1次。我们  向NSMutableArray这类物件  发送了  arrayWithObjects:这条消息  创建了  dataArray这个物件,而  arrayWithObjects:这条消息  会将  dataArray这个物件  添加  到自动释放池中,而  接着  我们   用mutableCopy这项措施  创建了  一个dataArray的复制品dataArray2,而  mutableCopy这项措施  却没有将  dataArray2这个物件  添加  到自动释放池,于是  我们  需要手动减少  它的引用次数,就像  这样:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值