美文网首页
copy相关知识点

copy相关知识点

作者: Coder007 | 来源:发表于2016-12-17 17:53 被阅读18次

copy相关知识点

  • copy 和 mutableCopy 都是创建副本,只是copy创建的是不可变副本,mutableCopy创建的是可变副本
  • 深拷贝:内容拷贝,是两个对象,改变其中一个不会影响另一个
  • 浅拷贝:指针拷贝,是一个对象,引用计数器加一,改变其中一个会影响另一个
  • 只有当不可变对象创建不可变副本的时候是浅拷贝,其他的都是深拷贝
只有NSString、NSArray、NSDictionary执行copy操作时才是浅拷贝
自定义类实现copy、mutableCopy操作
  • 让类遵守<NSCopying, NSMutableCopying>
  • 让类显示相应的方法
- (id)copyWithZone:(NSZone *)zone
{
    // 1.创建一个新的对象
    Person *p = [[[self class] allocWithZone:zone] init];
    
    // 2.设置当前对象的内容给新的对象
    p.name = _name;
    
    // 3.返回新的对象
    return p;
}
- (id)mutableCopyWithZone:(NSZone *)zone
{
    // 1.创建一个新的对象
    Person *p = [[[self class] allocWithZone:zone] init];
    
    // 2.设置当前对象的内容给新的对象
    p.name = _name;
    
    // 3.返回新的对象
    return p;
}
  • 需要注意一点,当子类也需要实现copy、mutableCopy操作的时候
  • 由于父类遵守了协议,并且实现了方法,只需要在子类中重写方法就可以了
- (id)copyWithZone:(NSZone *)zone
{
    // 1.创建副本
    id obj = [super copyWithZone:zone];
    // 2.设置数据给副本
    // 这里设置的数据是子类独有的属性,父类的属性已经在上一句代码中完成了
    [obj setHeight:_height];
    
    // 3.返回副本
    return obj;
}

相关文章

  • copy相关知识点

    copy相关知识点 copy 和 mutableCopy 都是创建副本,只是copy创建的是不可变副本,mutab...

  • 相关的知识点

    相关知识点: 1,Retain,copy assign 三个关键字的区别 Retain 用于修饰oc 对象 类型 ...

  • iOS开发 copy修饰属性

    既然上篇提到了copy相关的知识点,那么趁热打铁介绍一下为什么字符串的属性,要用copy修饰。 介绍之前,先回忆一...

  • 美图2018安卓开发实习生笔试题(回忆)

    选择和填空题 考察知识点: Java的copy by reference Java的线程安全相关知识 Java的t...

  • Copy相关

    整理一下自己学到的知识,方便以后查看 常规属性描述 1.NSString、NSArray、NSDictionary...

  • iOS copy相关

    strong和copy的区别当我们用@property来声明属性变量时,编译器会自动为我们生成一个以下划线加属性名...

  • day8-总结

    1.字典相关方法 字典.clear() - 清空字典(删除字典中所有的键值对) 2.copy 字典.copy()-...

  • python之练习(一)

    知识点: 1、sys.argv 2、pyperclip.paste(),payerclip.copy() 3、字符...

  • iOS property修饰关键字

    内存相关 ARC : strong、copy 、weak、assign、unsafe_unretained(xco...

  • 总结copy和mutableCopy相关

    其实我一直对于例如属性中的copy OR [array copy]这样的使用稀里糊涂的。之前有总结过,无奈现在又忘...

网友评论

      本文标题:copy相关知识点

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