美文网首页
不完全深拷贝要实现完全深拷贝

不完全深拷贝要实现完全深拷贝

作者: 丨十三叔丨 | 来源:发表于2019-04-28 11:20 被阅读0次

需求:默认状态下深拷贝指的是不完全深拷贝, 如要实现完全深拷贝, 则要重写copyWithZone: 方法, 自行实现完全深拷贝的
实现:大体思路如下, 在copyWithZone: 里对象赋值上不直接赋值而是通过copy方法即可实现


// Person.m
- (id)copyWithZone:(NSZone *)zone
{
    Person *cpyPerson = [[Person allocWithZone:zone] init];
    cpyPerson.name = self.name;
    cpyPerson.age = self.age;
    return cpyPerson;
}
// NSArray
- (id)copy
{
    NSArray *cpyArray = [[NSArray alloc] initWithArray:self copyItems:YES];
    return cpyArray;
}
// main.m
Person *p1 = [[Person alloc] init];
Person *p2 = [[Person alloc] init];
NSArray *array = @[p1, p2];
NSArray *cpyArray = [array copy];
NSLog(@"%@ - %@", array, cpyArray);
// 输出结果
(
    "<Person: 0x100204af0>",
    "<Person: 0x100206b20>"
) - (
    "<Person: 0x100207910>",
    "<Person: 0x1002074d0>"
)

相关文章

  • 不完全深拷贝要实现完全深拷贝

    需求:默认状态下深拷贝指的是不完全深拷贝, 如要实现完全深拷贝, 则要重写copyWithZone: 方法, 自行...

  • ios 关于深拷贝和浅拷贝的深入理解

    OC 语言的拷贝分三种:浅拷贝,不完全深拷贝,完全深拷贝,来让我们举个?: 1.浅拷贝:没有开辟新的指针地址,只是...

  • Objective-C之深复制、浅复制

    首先我要推翻这句不完全正确的话:“copy就是浅拷贝,mutableCopy就是深拷贝”。 (了解深复制、浅复制定...

  • iOS基础知识点(网络摘抄)

    1.父类实现深拷贝时,子类如何实现深拷贝。父类没有实现深拷贝时,子类如何实现深拷贝? 深拷贝同浅拷贝的区别:...

  • 深拷贝、浅拷贝

    父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 深拷贝同浅拷贝的区别:浅拷贝...

  • 面试题整理

    父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 深拷贝同浅拷贝的区别:浅拷贝...

  • iOS面试基础一

    #父类实现深拷贝时,子类如何实现深度拷贝.父类没有实现深拷贝时,子类如何实现深度拷贝.# <(1)深拷贝同浅拷贝的...

  • 0. iOS面试题基础篇

    1. 父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 1.1 深拷贝同浅拷贝...

  • iOS基础知识点01

    1. 父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 1.1 深拷贝同浅拷贝...

  • iOS知识点(一)

    1.1 父类实现深拷贝时,子类如何实现深度拷贝。 父类没有实现深拷贝时,子类如何实现深度拷贝。深拷贝同浅拷贝的区别...

网友评论

      本文标题:不完全深拷贝要实现完全深拷贝

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