iOS的NSCopying协议

若想令自己所写的对象具有拷贝功能,则需实现 NSCopying 协议。如果自定义的对象分为可变版本与不可变版本,那么就要同时实现 NSCopying与 NSMutableCopying协议。

具体步骤:

需声明该类遵从 NSCopying 协议
实现 NSCopying 协议。该协议只有一个方法:

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

注意:一提到让自己的类用 copy 修饰符,我们总是想覆写copy方法,其实真正需要实现的却是 “copyWithZone” 方法。

至于如何重写带 copy 关键字的 setter这个问题,
如果抛开本例来回答的话,如下:

- (void)setName:(NSString *)name {
    //[_name release];
    _name = [name copy];
}

你可能感兴趣的:(iOS的NSCopying协议)