对象复制

 copy与mutableCopy 方法

copy 方法用于复制对象的副本,返回对象不可修改的副本,即使该对象本身是可修改的

mutableCopy 复制对象的可变副本 mutableCopy方法总是返回该对象可修改副本,既是复制对象本身不能修改

NSCopying 与NSMutableCopy协议


对象复制_第1张图片

-(id)copyWithZone:(NSZone *)zone{

FKPreson *p=[[[self class]allocWithZone:zone]init];

p.age=self.age;

p.address=self.address;

p.count=self.count;

p.name=self.name;//浅复制(shallow copy)因为NSStirng需定指针型变量,如此的复制方式,只是将所指向的字符串地址复制一份

//p.name=[self.name mutableCopy]; 深复制(deep copy)不带复制本身, 递归赋值所有的指针变量,直至没有共同的部分

return p;

}

定义合成getter/setter方法时并没有提供mutableCopy指示符,因此即使定义实例变量时使用了可变类型,但只要使用copy指示符,实例变量实际得到的值总是不可变对象。

你可能感兴趣的:(对象复制)