博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
示例解释深拷贝和浅拷贝IOS
阅读量:5340 次
发布时间:2019-06-15

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

--------------转载请注明源地址:http://blog.csdn.net/u013082522/article/details/19932977

最近了解到了一些深拷贝和浅拷贝的区别.

整理如下:

比如我们创建了一个Person类,有name(NSString类型)以及age(int类型)两个属性.

好了.现在我们先实例化一个Person对象.并给他一个初始值/

Person *p1 =[ [Person alloc]init];

[p1 setName:@"XuKunHenWuLiao"];

[p1 setAge:18];

需求出现了.我们需要对p1进行(copy)操作.

浅拷贝:p2 = [p1 copy];p2的age是新生成的18,但是name却是指向与p1.name相同的内存区.

深拷贝:p2 = [p1 copy];p2的age和name都与p1的name指向的内存地址不同;

总结来说:

浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用.

深拷贝(深度克隆):不仅复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的.

遵循NSCoping协议的类才可以使用深拷贝.

如果一个我们自定义的类,也就是复杂的类,若想使用深拷贝,我们就需要让我们的类,实现NSCoping协议,而且需要重写协议中的方法.

@protocol NSCopying

- (id)copyWithZone:(NSZone *)zone;
@end
@protocol NSMutableCopying
- (id)mutableCopyWithZone:(NSZone *)zone;
@end

转载于:https://www.cnblogs.com/xukunhenwuliao/p/3576190.html

你可能感兴趣的文章
信息浏览器从Android的浏览器中传递cookie数据到App中信息浏览器
查看>>
客户端连接linux虚拟机集群报错
查看>>
linux下部署一个JavaEE项目的简单步骤
查看>>
hash储存机制
查看>>
[Android学习系列16]Android把php输出的json加载到listview
查看>>
20145205 《信息安全系统设计基础》第14周学习总结
查看>>
XML中CDATA和#PCDATA的区别
查看>>
6)添加一个窗口的图标
查看>>
SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)
查看>>
POJ - 1422 Air Raid 二分图最大匹配
查看>>
Road Map
查看>>
正则替换中的一个Bug
查看>>
HI3531uboot开机画面 分类: arm-linux-Ubunt...
查看>>
制作U盘启动CDLinux 分类: 生活百科 ...
查看>>
leetcode——Best Time to Buy and Sell Stock
查看>>
Android LinearLayout 的几个属性
查看>>
strcpy函数里的小九九
查看>>
搭建ssm过程中遇到的问题集
查看>>
OpenLayers绘制图形
查看>>
tp5集合h5 wap和公众号支付
查看>>