copy相关知识点

2016-12-17  本文已影响18人  Coder007

copy相关知识点

只有NSString、NSArray、NSDictionary执行copy操作时才是浅拷贝
自定义类实现copy、mutableCopy操作
- (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;
}
- (id)copyWithZone:(NSZone *)zone
{
    // 1.创建副本
    id obj = [super copyWithZone:zone];
    // 2.设置数据给副本
    // 这里设置的数据是子类独有的属性,父类的属性已经在上一句代码中完成了
    [obj setHeight:_height];
    
    // 3.返回副本
    return obj;
}
上一篇 下一篇

猜你喜欢

热点阅读