浅拷贝, 深拷贝, copy, retain 的用法

浅拷贝, 深拷贝, copy, retain 的用法

1.浅拷贝只复制对象的本身,对象里的属性, 包含的对象并不做复制
2.深拷贝复制对象本身, 对象中的属性也会复制一份


自定义对象实现拷贝
1.实现了NSCopying或者NSMutableCopying协议.
2.NSCopying协议需要实现 : - (id) copyWithZone:(NSZone *)zone 方法.
3.NSMutableCopying协议需要实现 : - (id) mutableCopyWithZone:(NSZone *)zone 方法.


copy , mutableCopy 和 retain 之间的关系
1.当我们copy一个不可变的对象时, 他的作用相当于retain (cocoa做的内存优化),堆内存并没有实现复制, 只是引用系数加1.
2.当使用mutableCopy复制一个对象时, 不管源对象是否可变, 都会实现对象真正的copy,既堆内存复制了一份.
3.当源对象时可变的, 使用copy和mutableCopy都会实现对象真正的copy.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值