自定义的类实现copy操作

2019-08-28  本文已影响0人  哈布福禄克
  1. 让类遵守NSCopying协议

  2. 实现 copyWithZone:方法,在该方法中返回一个对象的副本即可。

3.在copyWithZone方法中,创建一个新的对象,并设置该对象的数据与现有对象一致, 并返回该对象.

注释: zone: 表示空间,分配对象是需要内存空间的,如果指定了zone,就可以指定 新建对象对应的内存空间。但是:zone是一个非常古老的技术,为了避免在堆中出现内存碎片而使用的。在今天的开发中,zone几乎可以忽略

  1. 无父类实现
-(id)copyWithZone(NSZone*)zone{  

 CustomMode *custom = [[[self class]  copyWithZone:zone]  init];  

 Custom ->_a = [_a copyWithZone:zone];  

 Custom -> _c = _c;//不是对象的 直接赋值

Return custom;

}
  1. 有父类实现

不调用父类方法, 无法拷贝父类中继承的属性

不重新父类copyWithZone, 无法拷贝本来中的特有属性

-(id)copyWithZone(NSZone*)zone{

CustomModel *custom = [super copyWithZone:zone];

….Return custom;

}
上一篇 下一篇

猜你喜欢

热点阅读