copy与mutableCopy 方法
copy 方法用于复制对象的副本,返回对象不可修改的副本,即使该对象本身是可修改的
mutableCopy 复制对象的可变副本 mutableCopy方法总是返回该对象可修改副本,既是复制对象本身不能修改
NSCopying 与NSMutableCopy协议
-(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指示符,实例变量实际得到的值总是不可变对象。