美文网首页
使自定义的类具有copy功能

使自定义的类具有copy功能

作者: anna_hui | 来源:发表于2018-01-16 09:32 被阅读0次

首先,当对象需要调用 copy 的时候,需要遵守遵守 NSCopying 协议 和 调用 copyWithZone:这个方法

@interface Dog : NSObject
/** 姓名 */
@property (nonatomic, copy) NSString *name;
/** 年龄 */
@property (nonatomic, assign) int age;

@end


// 需要遵守 NSCopying 协议
@interface Dog () <NSCopying>

@end

@implementation Dog
// 当对象需要调用 copy 的时候,需要调用 copyWithZone:这个方法
- (id)copyWithZone:(NSZone *)zone
{
    Dog *dog = [[Dog allocWithZone:zone] init];
    dog.name = self.name;
    dog.age  = self.age;
    return dog;
}
@end
Dog *dog = [[Dog alloc] init]; // [object copyWithZone:zone]
dog.name = @"huahua";
dog.age  = 1;
Dog *newDog = [dog copy]; // 产生新对象【深拷贝】
NSLog(@"%@ %@",dog,newDog);
NSLog(@"%@ %@",dog.name,newDog.name);```

当自定义对象调用copy的时候属于深拷贝.

相关文章

网友评论

      本文标题:使自定义的类具有copy功能

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