OC自定义对象的copy

一、概念

1、copy的目的在于修改源对象或者副本的时候互不影响

2、只有在不可变对象copy的时候才是浅拷贝,其余都是深拷贝

二、自定义对象的copy(必须首先遵守NSCopying协议)

1、自定义对象copy的必要步骤

1>遵守NSCopying协议

2>重写实现copyWithZone:方法

2、ARC的copy

实现copyWithZone:(NSZone *)zone

e.g.:person对象有两个属性name和age

- (id)copyWithZone:(NSZone *)zone{

Person *person = [[self alloc] init];

person.age = self.age;

person.name = self.name;

return person;

}

3、MRC的copy

1>做完必要的遵守协议和实现copyWithZone方法

2>对OC对象属性重写其内存管理的setter方法

3>重写dealloc方法

3、zone空间介绍

1>因为copyWithZone:当中的zone就是要为对象开辟的内存空间(OC的alloc就是C语言的malloc开辟内存用的,同样需要告诉系统你要开辟空间大小)

2>NSZone空间分配出来的堆空间是相对比较连续的,可以减少内存碎片,一般程序开发没有必要关心


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值