深浅复制


浅拷贝:只是拷贝对象本身,而其内的属性,所包含的对象不会拷贝。
深拷贝:不仅拷贝本身,所包含的属性和对象也会拷贝

Foundation框架内默认是浅拷贝
浅拷贝其实是指针拷贝,而深拷贝才是对象拷贝

1:非容器类型
NSString ,NSSNumbel   对于不可变对象   copy是浅拷贝(指针拷贝),mutabCopy是深拷贝,但对于可变对象,都是深拷贝,只是copy返回对象是不可变的

2:容器类型
NSDictionary,NSSArray    对于不可变对象  copy是浅拷贝(指针拷贝),mutabCopy是深拷贝,但对于可变对象,都是深拷贝,只是copy返回对象是不可变的,但是容器内的元素内容实现都是浅拷贝

copy和mutabCopy区别,前者返回一个不可变对象,后者返回一个可变对象。

3:当使用copy拷贝一个对象时候,那么此时相当于retain,因为如果创建一个副本,那么没有任何意义,浪费内存。

4:当使用mutabCopy时候,无论对象是可变的还是不可变的,都是实现真正意义上的拷贝。

5:当对象是可变的时候,使用copy和mutabCopy都是深拷贝,创建副本。

总之,当对象时不可变的,使用copy进行拷贝,是指针拷贝,即浅拷贝,其它情况下,是深拷贝。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值