copy 返回一个不可变的对象;
mutableCopy 返回一个可变的对象;
使用copy方法时 类必须实现:<NSCopying>协议中的-(id)copyWithZone:(NSZone*)zone方法
-(id)copyWithZone:
{
FKDog* dog=[[[self class]allocWithZone:zone]init];
dog.name=self.name;
dog.age=self.age
return dog;
}
子类重写父类的该方法时,必须
-(id)copyWithZone:(NSZone*)zone
{
id obj=[super copy];
...
return obj;
}
使用mutableCopy时 类必须实现<NSMutableCopying>协议
浅复制:复制指向对象的指针,而不是对象的内容;
深复制:复制指针所指对象的内容 //一般来说深复制的实现难度要大的多,特别是对象涉及到较多的指针类型的属性时。
@property中的setter方法
copy关键字的影响:
该指示符表示,当调用set***方法时(使用点语法本质上也是调用set***方法),程序会使用参数的副本对***实例变量赋值;