网站/小程序/APP个性化定制开发,二开,改版等服务,加扣:8582-36016

    浅拷贝:浅拷贝并不拷贝对象本身,只是对指向对象的指针进行拷贝
    深拷贝:直接拷贝对象到内存中一块区域,然后把新对象的指针指向这块内存

    iOS中并不是所有对象都支持Copy和MutableCopy,遵循NSCopying协议的类可以发送Copy协议,遵循NSMutableCopying协议的类可以发送MutableCopy消息。如果一个对象没有遵循这两个协议而发送Copy或者MutableCopy消息那么会发生异常。如果要遵循NSCopying协议,那么必须实现copyWithZone方法。如果要遵循NSMutableCopying协议那么必须实现mutableCopyWithZone方法

    1.非容器对象(NSString

    不可变对象调用Copy方法其实只是把当前对象的指针指向了原对象的地址,而调用mutableCopy方法则是新分配了一块内存区域并把新对象的指针指向了这块区域。

    可变对象来说调用Copy和MutableCopy方法都会重新分配一块内存。但是copy和mutableCopy的区别在于copy在复制对象的时候其实是返回了一个不可变对象,因此当调用方法改变对象的时候会崩溃

    2.容器类对象(NSArray)

    容器对象本身和非容器对象是同样的效果,但是容器里的元素还是指针复制。

    评论 0

    暂无评论
    0
    0
    0
    立即
    投稿
    发表
    评论
    返回
    顶部