iOS-深浅拷贝

作者: 磊CC | 来源:发表于2016-04-16 14:43 被阅读59次

    深拷贝:复制对象并且复制对象里面的内容完全拷贝

    浅拷贝:指针拷贝只拷贝对象本身不拷贝里面内容

    看是不是深拷贝主要看是不是拷贝了对象里面的内容

    copy、mutableCopy系统自带的这两个拷贝都属于浅拷贝

    实现深拷贝的方式:

    1、可以自定义拷贝(要看具体拷贝的内容)

    并不是所有对象都可以拷贝只有遵守了拷贝协议的对象才可以

    拷贝比如:SString

    NSArray NSDictionary

    (1)导入协议

    (2)实现协议方法、自定义拷贝

    ①、copyWithZone:

    ②、mutableCopyWithZone:

    2、系统提供给了深拷贝的方法copyItems如果是YES就是深拷贝

    (1)数组的:-

    (instancetype)initWithArray:(NSArray *)array

    copyItems:(BOOL)flag

    (2)字典的:-

    (instancetype)initWithDictionary:(NSDictionary

    ObjectType> *)otherDictionary copyItems:(BOOL)flag

    不可变对象copy ->不可变对象

    可变对象copy ->不可变对象

    不可变对象mutableCopy ->可变对象必须用对应的类型去接收

    可变对象mutableCopy ->可变对象必须用对应的类型去接收

    mutableCopy?深浅拷贝

    如果:

    指针拷贝->浅拷贝

    对象拷贝->深拷贝

    那么:mutableCopy

    ->深拷贝

    在使用mutableCopy拷贝后两个对象的内存地址是不一样的

    相关文章

      网友评论

        本文标题:iOS-深浅拷贝

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