美文网首页
iOS深拷贝、浅拷贝

iOS深拷贝、浅拷贝

作者: VeraZhang | 来源:发表于2016-03-24 16:20 被阅读104次

    copy
    copy方法返回的是强引用指针。深拷贝指的是内容复制,在内存中重新分配空间给新对象。浅拷贝指的是指针复制,浅拷贝的对象引用计数+1。拷贝不可变对象会浪费内存空间,所以浅拷贝就足够了。copy能够减少对象对上下文的依赖。

    不是所有对象都支持copy mutablecopy,遵守NSCopying 协议的类可以发送copy消息,遵守NSMutableCopying 协议的类才可以发送mutableCopy消息。
    copy返回不可变对象,mutable copy返回可变对象。

    一、非容器类对象
    NSString NSNumber

    1)对不可变对象,copy时指针复制(浅拷贝),mutablecopy是对象复制(深拷贝);

    2)对可变对象,copy、mutablecopy都是深拷贝。

    二、系统容器对象
    NSArray NSDictionary

    1)对不可变对象,copy时指针复制(浅拷贝),mutablecopy时对象复制(深拷贝);容器内元素都是指针复制。

    2)对可变对象,copy mutablecopy都是深拷贝。元素都是指针复制。

    *容器内的元素都是指针复制(浅拷贝),要想连元素都对象复制,使用官方提供的 initWithArray: copyItems:

    相关文章

      网友评论

          本文标题:iOS深拷贝、浅拷贝

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