关于协议:NSCopying 和NSMutableCopying

本文介绍了NSCopying和NSMutableCopying协议,如何让自定义类支持copy操作,以及深拷贝和浅拷贝的区别。重点讨论了系统非容器类和容器类在拷贝时的行为,并提醒在实现拷贝功能时考虑对象是否需要深拷贝。
摘要由CSDN通过智能技术生成

关于协议:NSCopying 和NSMutableCopying


协议:

  • @protocol NSCopying

-(id)copyWithZone:(nullable NSZone *)zone;

  • @protocol NSMutableCopying

-(id)mutableCopyWithZone:(nullable NSZone *)zone;


如果想让自己实现的类支持copy操作:

  • 遵守以上协议
  • 实现协议方法

demo文件:自定义的demo写在FESCopyDemo.h里,使用写在- (void)customCopyingDemo;方法中

类的对象的copy:

  • 类直接继承自NSObject,无需调用[super copyWithZone:zone]
  • 父类实现了copy协议,子类也实现了copy协议,子类需要调用[super copyWithZone:zone]
  • 父类没有实现copy协议,子类实现了copy协议,子类无需调用[super copyWithZone:zone]
  • copyWithZone方法中要调用[[[self class] alloc] init]来分配内存

自定义的类实现深拷贝

  • 没有专门定义深拷贝的协议,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值