为自己创建的类实现Copy方法
//<1>Main
int main(int argc, const char * argv[]) {
/*
为自己创建的类实现Copy方法
1.类要遵守NSCopying协议
2.类要实现NSCopying协议的copyWithzone方法
3.copyWithZone方法中, 创建一个新的对象,并设置该对象的数据与现有对象一致,并返回该对象
*/
@autoreleasepool {
Person *p1=[[Person alloc] init];
p1.name=@"xhp";
p1.age=18;
Person *p2=[p1 copy];
//验证地址
NSLog(@"%p-------%p",p1,p2);
//修改一个对象的数据
p1.name=@"潘晓婷";
//验证内容
NSLog(@"源对象p1:%@,%d",p1.name,p1.age);
NSLog(@"拷贝副本p2:%@,%d",p2.name,p2.age);
}
return 0;
}
//1.要遵守 NSCopying 协议
@interface Person : NSObject<NSCopying>
@property (nonatomic,copy) NSString *name;
@property (nonatomic,assign) int age;
@end
//<3>Person.m
#import "Person.h"
@implementation Person
//2.要实现NSCopying的copyWithzone方法
-(id)copyWithZone:(NSZone *)zone
{
//zone: 表示空间,分配对象是需要内存空间的,如果指定了zone,就可以指定新建对象对应的内存空间,不再使用。
//3>创建一个对象并且返回
Person *p1=[[Person alloc] init];
p1.name=self.name;
p1.age=self.age;
return p1;
}