美文网首页
实现拷贝的方法

实现拷贝的方法

作者: 走道牙的人 | 来源:发表于2016-07-14 09:24 被阅读6次
  • copy

    • 只会产生不可变的副本对象(比如NSString)
  • mutableCopy

    • 只会产生可变的副本对象(比如NSMutableString)
  • ios 中并不是所有的对象都支持copy,mutableCopy,遵守NSCopying协议的类可以发送copy消息,遵守NSMutableCopying协议的类才可以发送mutableCopy消息。

  • Foundation框架支持复制的对象有NSString、NSArray、NSNumber、NSDictionary、NSMutableString、NSMutableArray、NSMutableDictionary等。

  • 假如发送了一个没有遵守上诉两协议而发送copy或者 mutableCopy,那么就会发生异常。但是默认的ios类并没有遵守这两个协议。

  • 如果想自定义一下copy 那么就必须遵守NSCopying,并且实现 copyWithZone: 方法,如果想自定义一下mutableCopy 那么就必须遵守NSMutableCopying,并且实现 mutableCopyWithZone: 方法

@interface DBConfiguration : NSObject <NSCopying>
/** 包间配置 */
@property (nonatomic, strong) NSArray *roomConfigure;
/** 宴会类型 */
@property (nonatomic, strong) NSArray *banquetCategory;
/** 包间人数 */
@property (nonatomic, assign) NSInteger peopleNum;
/** 店铺配置 */
@property (nonatomic, strong) NSArray *shopConfigure;
@end

@implementation DBConfiguration
- (id)copyWithZone:(NSZone *)zone
{
    DBConfiguration *copy = [[DBConfiguration allocWithZone:zone] init];
    copy.roomConfigure = [self.roomConfigure copy];
    copy.banquetCategory = [self.banquetCategory copy];
    copy.peopleNum = self.peopleNum;
    copy.shopConfigure = [self.shopConfigure copy];
    return copy;
}
@end

相关文章

  • 浅拷贝和深拷贝 实现的几种方式

    浅拷贝 一、通过拷贝构造方法实现浅拷贝: 拷贝构造方法指的是该类的构造方法参数为该类的对象。使用拷贝构造方法可以很...

  • JS 中深拷贝的几种实现方法

    JS 中深拷贝的几种实现方法 1、使用递归的方式实现深拷贝 方法二 2、通过 JSON 对象实现深拷贝 缺点 (1...

  • JS深拷贝的实现方法

    1、使用递归的方式实现深拷贝 2、通过 JSON 对象实现深拷贝 注意:JSON对象实现深拷贝无法实现对对象中方法...

  • iOS 数组深复制 NSMutableCopy

    实现模型数组深拷贝的方法1、最笨的方法就是通过遍历逐个拷贝元素 2、也有人使用归档解档实现数组内部元素拷贝 3、这...

  • Javascript中的深拷贝

    JS 中深拷贝的几种实现方法 1、使用递归的方式实现深拷贝 //使用递归的方式实现数组、对象的深拷贝 functi...

  • NSInputStream、NSOutputStream实现文件

    NSInputStream、NSOutputStream实现文件的拷贝 实现代理方法

  • 原型模式

    简介 实现Cloneable接口,重写clone方法。要注意深拷贝和浅拷贝问题。 浅拷贝:新实例的...

  • js 手写深浅拷贝

    实现深浅拷贝 浅拷贝 先说一下浅拷贝的实现方式 Object.assign() ES6 中 Object 的一方法...

  • 实现拷贝的方法

    copy只会产生不可变的副本对象(比如NSString) mutableCopy只会产生可变的副本对象(比如NSM...

  • 关于继承

    继承的实现方法 属性拷贝 浅拷贝 深拷贝 原型继承 原型式继承 原型链继承 组合继承(深拷贝+优化后的原型式继承)...

网友评论

      本文标题:实现拷贝的方法

      本文链接:https://www.haomeiwen.com/subject/qwsejttx.html